У меня есть обновление JQuery/Ajax. Он корректно обновляется во всех основных браузерах, однако обработка ответов об ошибках не работает ни в одной версии IE.Ответ JQuery/AJAX - работает в FF/Safari, но не в IE parseFloat (html) проблема?
Херес Аякса отправить код:
$('.ajax_multi_submit').click(function (event) {
// if javascript is enabled, stop default post
event.preventDefault();
// get the id assigned to this form. This id will
// be added to every id to used in processing
var element = $(this);
var Id = element.attr("id");
var formUrl = $('#ajax_multi_form' + Id).attr('action');
$.ajax({
url: formUrl,
type: "POST",
dataType: "html",
data: $('#ajax_multi_form' + Id).serialize(),
beforeSend: function() {
showAjaxMultiBusy(Id);
},
complete: function() {},
success: function (html) {
processAjaxMultiForm(html, Id);
}
});
});
Опять же, я не думаю, что проблема здесь, как и все браузеры правильно размещать обновления. Тем не менее, при обработке результата с этим кодом:
function processAjaxMultiForm(html, Id) {
$('#ajax_errors' + Id).hide('slow');
window.setTimeout(function() {
$('#ajax_busy' + Id).hide('slow');
if (parseFloat(html)) {
$('#ajax_message' + Id).html('Record Saved.').show('normal');
$('#ajax_message' + Id).hide('slow');
} else {
$('#ajax_errors' + Id).html(html).show('slow');
}
}, 1500);
}
Когда строка ошибки возвращается вместо целого числа (parseFloat (HTML) = «некоторая строка ...»), FF и Safari правильно отображать ошибку в условие «else».
IE всегда будет отображать условие «если», независимо от возвращаемого значения (1 = успех, строка = ошибка).
Я предполагаю, что какой-то гений там сразу увидит проблему?
EDIT ------- Вот немного больше информации. Я добавил консольный журнал сценарию для вывода переменной html. Я получаю правильную строку на ошибках и «1» на успех. Я обновил код за предложением ниже:
function processAjaxMultiForm(html, Id) {
$('#ajax_errors' + Id).hide('slow');
window.setTimeout(function() {
$('#ajax_busy' + Id).hide('slow');
console.log("html is: " + html);
if (isNaN(html)) {
$('#ajax_errors' + Id).html(html).show('slow');
} else {
$('#ajax_message' + Id).html('Record Saved.').show('normal');
$('#ajax_message' + Id).hide('slow');
}
}, 1500);
}
Как и прежде, работает, как ожидалось в FF Safari, но IE оценивает как строку (ошибки) и целое (успех) как «успех»
Спасибо за попробовать Ждут! Я поменялся в isNAN, как и предлагалось (см. ниже). Хорошо работает для сафари и FF. Не работает в IE8. Не пробовал еще 6 или 7. IE показывает «сохраненную запись» независимо от того, успех или нет. if (isNaN (html)) { $ ('# ajax_errors' + Id) .html (html) .show ('slow'); \t \t \t \t \t \t} еще { \t \t $ ('# ajax_message' + Id) .html ('Запись сохранена.') Шоу ('нормальный'). \t $ ('# ajax_message' + Id) .hide ('slow'); \t \t} – pdxtim
Я просто попробовал isNaN («abc») и isNaN («123») в IE с инструментами разработчика (Инструменты -> Инструменты разработчика), и я получил ожидаемые результаты (true и false соответственно). –
Спасибо за вашу помощь. Я обнаружил ошибку вверх по течению. Я не понимаю, почему это повлияло бы на оценку целых чисел и целых чисел, но изменение вверх по течению привело к тому, что это исчезло. THANK YOU – pdxtim