繁体   English   中英

IE8中的jQuery ajax()调用失败

[英]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得到了相同的行为。

看来live 无法在IE中submit 您是否尝试过使用普通提交:

$('form.ajax').submit(function() {

要在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

  • jQueries的绑定和实时行为以及liveQuery插件

LiveQuery插件解决了该问题http://github.com/brandonaaron/livequery

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM