我忘记了我更改了我的 ajax 处理程序以使用 IE,并且没有更改此特定表单的 ajax 函数,因为此表单的响应应该被隐藏,因此它使用不同的 ajax 处理程序。
这是我的主要提交功能:
(function($){
jQuery.fn.ajaxFormSubmit =
function(container, data) {
var url = $(this).attr('action');
$.ajax({
url: url,
type: "POST",
data: data,
dataType: "html",
success: function(msg) {
$(container).html(msg);
}
});
return this;
};
})(jQuery);
我曾经在这个函数中序列化表单数据,但后来我意识到它不适用于 IE,唯一的解决方案是在执行其他任何操作之前序列化表单数据!
这是我正在使用的两个函数:
$('form[ajax]').live('submit', function(e){
e.preventDefault();
var data = $(this).serialize();
var container = $(this).attr('cont');
if (typeof container == 'undefined' || container == false) {
container = '.#ajax';
}
$(container).html('<img src="public/images/ajax.gif"/>');
$(container).fadeIn('fast');
$(this).ajaxFormSubmit(container, data);
});
$('form[ajax-hidden]').live('submit', function(e){
e.preventDefault();
var data = $(this).serialize();
var container = '';
$(this).ajaxFormSubmit(container, data);
});
第二个函数根本没有数据变量。所以我添加了它。希望这可以帮助某人。