IE与window.location.href的兼容性

时间:2012-04-18 02:02:39

标签: javascript jquery ajax internet-explorer

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

3 个答案:

答案 0 :(得分:5)

这是括号。 href不是函数,因此尝试调用它window.location.href("/step2.php") - 是TypeError

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

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

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

在内部,这样做只是调用location.assign(),并分配给属性does not always behave the same in all browsers


关于,async:false 从不那样做。如果您发出同步XHR请求,则报告的IE9挂起的you're doing it wrong 8.4%是由于同步XHR阻止了浏览器。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

IE只喜欢完整的网址。

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'         
});