Разное поведение для пустого XML-ответа между IE и Firefox
Я использую jQuery для чтения файла XML. Иногда XML пустой, и я ожидаю, что функция ошибки (no_info
) выполняется, потому что файл не отформатирован в соответствии с dataType
.
В IE 10 функция Error выполняется. Но в Firefox (40.0.2) функция успеха (parse
) выполняется. Почему оба браузера ведут себя по-разному и какой из них правильный?
$.ajax({
url: '/~play/shout.xml',
dataType: "xml",
success: parse,
error: no_info
});
Ответы
Ответ 1
Похоже, там ошибка в IE
как насчет того, чтобы справиться с этим самостоятельно?
function parseXml(xml) {
if ($.browser.msie) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "XML_file.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
xml = xmlDoc;
}
return xml;
}
предыдущий ответ
Ответ 2
Если бы я был вами, я бы установил обратный вызов console.log(ответ) для успеха и неудачи... тогда я посмотрю, в чем разница.
Также я бы посмотрел на вкладке сети, чтобы узнать, что представляют заголовки ответов.
Ответ 3
какую версию JQuery вы используете? Я использую самое актуальное, и с моей функцией AJAX я не мог столкнуться с какими-либо проблемами. Это мой код
function sync(arg, callback){ //ajax result
$('.loader').show();
$.ajax({
method: 'GET',
url: 'liveSearch.php',
data: arg, // send argument and update
success: function(data, status, xhr){
$('.loader').hide();
callback(data);
},
error: function(xhr, ajaxOptions, thrownError){
console.log(thrownError);
}
});
}
function onCallback(data) {
result = data;
}
Ответ 4
параметр dataType просто указывает заголовок "Content-Type", который вы ожидаете.
До тех пор, пока файл существует и обслуживается с допустимой функцией Content-Type Success, должен быть запущен.
Ответ 5
вместо того, чтобы просто /~
попытаться передать весь URL-адрес, с которого вы хотите получить файл XML.