我正在尝试调试我的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项的相同链接。
答案 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'