Jquery AJAX无法在IE 7/8上运行

时间:2009-11-28 21:36:14

标签: jquery ajax internet-explorer

我正在尝试调试我的ajax get / post无法在IE 7/8中运行的原因

这是我的代码:

$.ajax({type: "POST", dataType:'html',url: "/places/set_member/add/",data: "place_id="+place_id ,
                       beforeSend:  function() {$("<span class='notice'>Saving...</span>").prependTo('body');},
                       success: function(){
                        $.ajax({type:"GET",url:url,success:function(html){$('div.place-list .ui-tabs-panel').html(html);},complete:function(){resetAddThis();}})
                       },
               complete: function() {
                            $('span.notice').fadeOut(500);
                $('span.notice').remove();
                            }});

现在这在FF Safari Win / Mac中运行良好,但在IE 7/8

中没有

我下载了fiddler并观看了调用,该脚本应该向服务器发送数据,然后重新加载现在有新更新信息的HTML。发生的事情是第一次调用得到一个错误500但是,然后在重新加载html之后,再次执行相同的操作,它将以200ms发送,因此它给出了它不保存的外观,它只做在第二次尝试。

我做错了什么,或者我需要添加什么?这是一个php循环,因此该功能被应用于页面上20-30项的相同链接。

6 个答案:

答案 0 :(得分:13)

IE缓存所有非POST类型的ajax调用。我发现最好让所有Ajax调用POST以避免IE执行此操作,即使您发布空数据。

或者你可以像@redsqaure在下面建议那样做:

$ ajaxSetup({缓存:假})。

答案 1 :(得分:4)

如果您不需要将数据类型设置为HTML,则可以尝试此操作。

$.ajax({        
  url: 'Enter URL'
  dataType: 'jsonp',
  type: 'get',
  success: function (data) { }
});

答案 2 :(得分:2)

IE缓存ajax调用。确保在通话中包含随机数字或随机字符串,例如&rand=[some randomly generated something]并再次尝试。

答案 3 :(得分:0)

最后! 我解决了我的问题,这是因为“同源策略”,只是在IE中加注!: 我只是将网址参数从'http://mysite.com/api/'更改为'/ api /' 它的工作原理!!!

希望对你们有些帮助!

答案 4 :(得分:0)

我遇到了与jquery 2.0.2相同的问题。我将jquery更改为1.8.1,Ajax在IE中完美运行。

答案 5 :(得分:-1)

在大多数浏览器中,您可以指定:

url: ''

...对于jQuery ajax调用,这将发布给自己。

在IE中,您必须提供一个URL。

url: '/relative/path/to/script'