IE 与 window.location.href 不兼容

问题描述 投票:0回答:4

我正在使用来自 AJAX post 请求的回调来导航到新页面,但它在 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
请求完成之前发生更改。

javascript jquery ajax internet-explorer
4个回答
5
投票

就是括号。

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
?)


0
投票

window.location.href = "/step2.php"

就好了。


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

0
投票
';

$.ajax({ 类型:“帖子”, 网址:phpUrl,

数据:数据,
异步:假, 成功:函数(){

window.location.href(fullURL); }, dataType:'json'
});

© www.soinside.com 2019 - 2024. All rights reserved.