我有一个JQuery/Ajax更新。它在所有主流浏览器中正确更新,但是,处理错误响应在任何版本的IE中都不起作用。Jquery/AJAX响应 - 在FF/Safari中工作,但不是IE parseFloat(html)问题?
继承人的AJAX提交代码:
$('.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正确显示在错误“其他”条件。
无论返回值如何(1 =成功,字符串=错误),IE始终显示“if”条件。
我假设一些天才会立即看到问题吗?
编辑------- 这里有一些信息。我在脚本中添加了一个控制台日志来输出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建议(见下文)。适用于safari和FF工作正常。不能在IE8中工作。还没有尝试过6或7。 IE显示“record saved”,无论是否成功 if(isNaN(html)){('#ajax_errors'+ Id).html(html).show('slow'); \t \t \t \t \t \t}其他{ \t \t $( '#ajax_message' +编号)的.html( '记录保存。')显示( '正常')。 \t $('#ajax_message'+ Id).hide('slow'); \t \t} – pdxtim 2009-08-16 21:48:30
我刚刚在IE浏览器中用开发工具(工具 - >开发工具)尝试过isNaN(“abc”)和isNaN(“123”),我得到了预期的结果(分别为true和false) – 2009-08-16 22:10:30
感谢您的帮助。我在上游发现了一个错误。我不明白为什么它会影响字符串与整数的评估,但是上游的改变让这个消失。谢谢 – pdxtim 2009-08-17 01:52:55