IE与window.location.href不兼容

我正在使用来自AJAX发布请求的回调来导航到新页面,但它无法在Internet Explorer上运行。 我的代码如下:

$.ajax({ type: "POST", url: phpUrl, data: data, async: false, success: function() { if (navigator.appName == 'Microsoft Internet Explorer'){ window.location.href("/step2.php")} else{ window.location.href = "/step2.php"} }, dataType:'json' }); 

这在FF / Safari / Chrome上工作正常,但是当我在IE上测试它时它不起作用。 有没有更好的方法重定向到新页面? 我正在使用async:false因为如果我没有使用回调,我的数据没有在Chrome / Safari上加载,因为页面只会在POST请求完成之前更改。

这是括号。 href不是函数,所以试图调用它 – window.location.href("/step2.php") – 是一个TypeError

像下一行一样分配给href ,或者更好,使用location.assign()

 location.assign('/step2.php'); 

虽然您可以直接分配到location的属性( location.href='...'; )以使浏览器导航,但我建议不要这样做。

在内部,这样做只是调用location.assign() ,并且分配给属性并不总是在所有浏览器中表现相同 。


关于, async:false永远不要那样做 。 如果您发出同步XHR请求, 那么您做错了 。 报告的IE9挂起的8.4%是由于同步XHR阻止了浏览器。

鉴于你在回调中有它,在POST完成之前不会发生到location的分配,所以我不确定你的意思是“在POST完成之前页面会改变”。 (你忘了取消表格的submit吗?)

window.location.href = "/step2.php"就好了。

IE只像完整的url。

 var fullURL = 'http://www.your_site.com/step2.php'; $.ajax({ type: "POST", url: phpUrl, data: data, async: false, success: function() { window.location.href(fullURL); }, dataType:'json' });