我有以下代码,用于从类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中获得了相同的行为。
答案 0 :(得分:0)
在IE中看起来像live
doesn't work with submit
。您是否尝试过使用普通提交:
$('form.ajax').submit(function() {
答案 1 :(得分:0)
要在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只是简单的应用程序/ json
jQueries' bind and live behaviours along with the liveQuery plugin
答案 2 :(得分:0)
LiveQuery插件解决了问题http://github.com/brandonaaron/livequery