小编典典

IE与window.location.href不兼容

ajax

我正在使用来自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请求完成之前页面只会更改。


阅读 512

收藏
2020-07-26

共1个答案

小编典典

是括号。 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阻止了浏览器。

鉴于您已在回调函数中添加了该对象location,因此在POST完成之前不会进行分配,因此我不确定“在POST完成之前页面会更改”的含义。(您是否忘记取消表格的submit?)

2020-07-26