Ajax请求不能在IE中使用jQuery

时间:2011-07-10 10:01:03

标签: ajax internet-explorer jquery

我们正面临着一个特殊的问题,即ajax请求没有使用jquery发送。 有趣的是,它适用于IE8,但不适用于以下版本。 我已经尝试了其他相关帖子中提到的大多数事情,但没有成功。

可能是我在这里错过了一些大事。但IE似乎从功能和css dev的角度来创造了很多麻烦。 :(

我们的网络应用程序基于rails。

任何帮助/指针都会很棒。

感谢。

jQuery.ajaxSetup({
   cache: true,
   'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
});

$(document).ajaxSend(function(event, request, settings) {
  if (typeof(AUTH_TOKEN) == "undefined") return;  
  if ( settings.type != 'GET' &&  settings.type != 'get') {
      settings.data = settings.data || "";
      settings.data = (settings.data ? settings.data + "&" : "")
         + "authenticity_token=" + encodeURIComponent( AUTH_TOKEN );
  }
});
  $(document).ready(function(){
    $(".signup").live('click', function() {
    var a_key = $('#f_auths').find('input[name="a_key"]').val();
    var a_uid =  $('#f_auths').find('input[name="a_uid"]').val();
    var a_provider =$('#foreign_auths').find('input[name="a_provider"]').val();
    $(this).closest('form').find('input[name="user[provider]"]').val(a_provider);
    $(this).closest('form').find('input[name="user[key]"]').val(a_key);
    $(this).closest('form').find('input[name="user[uid]"]').val(a_uid);

    $.ajax({
      url: "/users",
      type: 'POST',
      data: $(this).closest('form').serialize() ,
      beforeSend: function(){
        $('#loading').css('display','block'); 
      },
      success: function(){

        $('loading').css('display','none');
      },
    });
    return false;

});

4 个答案:

答案 0 :(得分:1)

我之前也遇到过麻烦。在我的例子中,更改Ajax调用中的“类型”设置修复了它。我记得另一个案例,我的服务器实际上将一个稍微错误的mimetype发送回客户端,因此请仔细检查从服务器脚本发回的内容类型。希望可能有一些帮助。

答案 1 :(得分:1)

如果您在选项中返回脚本调试复选框,安装Internet Explorer Developer Toolbar将有助于找出JavaScript问题。

答案 2 :(得分:1)

在最后一个参数(成功)之后删除尾随逗号(,)。它打破了IE 7。

答案 3 :(得分:0)

我曾经遇到过jQuery和ajax请求的问题,其中IE7在解析url中的'#'字符时遇到问题。摆脱了#一切按预期工作。