[英]Jquery ajax() call fails in IE8
我有以下代码,用于从ajax
类的形式使用ajax提交数据。 这在Firefox,Safari和Chrome中完美运行,但在IE中失败。
ajax: function() {
$('form.ajax').live('submit', function() {
var form_ajax = $(this);
$.ajax({
url: form_ajax.attr('action'),
data: form_ajax.serialize(),
type: form_ajax.attr('method'),
dataType: 'script',
beforeSend: function(xhr) {
$('#ajax-bid-new .ajax-form-error, #ajax-bid-new .ajax-form-success').remove();
form_ajax.slideUp();
}
});
return false;
});
请帮忙-我在这里停留了过去2天。 我从服务器返回一个Javascript文件,以便在浏览器中进行评估。 这在Firefox,Chrome和Safari中可以正常工作,但是IE会将其作为文件接收,并打开文件下载对话框 。
我可以在IE中做什么才能使这项工作正常进行? 我尝试通过在我的application.js
文件中删除以下代码来尝试(我正在做一个rails项目)
// public/javascripts/application.js
jQuery.ajaxSetup({
'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
})
即使像上面那样编写了ajaxSetup
块,我也从IE得到了相同的行为。
要在IE中捕获实时表单提交事件,而不是:
$("form").live("submit", function() { ... });
至
var submitHandler = function() { ... };
$("body").children().each(function() {
$("form", this).live("submit", submitHandler);
})
需要注意的地方
IE确实非常主动地缓存AJAX请求(无论如何,它比Firefox都要多)。 如果这不适用于您的站点,则需要在响应中适当设置Cache-Control标头。
更改您的内容类型,上次我通过从application / json更改内容类型来解决了类似的问题; charset = utf8只是普通的application / json
LiveQuery插件解决了该问题http://github.com/brandonaaron/livequery
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.