Javascript IE与window.location.href不兼容

Javascript IE与window.location.href不兼容,javascript,jquery,ajax,internet-explorer,Javascript,Jquery,Ajax,Internet Explorer,我正在使用来自AJAX post请求的回调来导航到新页面,但它在Internet Explorer上不起作用。我的代码如下: $.ajax({ type: "POST", url: phpUrl, data: data, async: false, success: function() { if (navigator.appName == 'Microsoft Internet Explorer'){ wi

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

window.location.href=“/step2.php”

这是括号
href
不是一个函数,因此尝试调用它-
window.location.href(“/step2.php”)
-是一个
类型错误

与下一行一样分配给
href
,或者更好地使用:

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

在内部,这样做只是调用
location.assign()
,然后分配给属性


关于,
async:false
永远不要这样做。如果您发出同步XHR请求,报告的IE9挂起中有.是由于同步XHR阻塞浏览器造成的

考虑到您在回调中有它,在帖子完成之前,分配到
位置的任务不会发生,因此我不确定您所说的“页面将在帖子完成之前更改”是什么意思。(您是否忘记取消表单的
提交
?)

即仅与完整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'         
}); 

嗯,什么都可以,除了IE!你有没有想过为什么它不能在这个浏览器上工作?奇怪
location.assign(“/step2.php”)
也不适用于IE,但适用于FF/Safari/Chrome。我最初尝试将其用作函数是基于我阅读的文档(也指@Hexxagonal)。我理解你关于
异步的观点,我已经删除了它。谢谢你的建议。永远都不是一个强有力的词。对于同步ajax,它有时是必要且有用的。然而,你的观点是正确的。在需要阻塞的情况下,开发人员应该注意以明显的方式显示某些事情仍在发生,例如ajax加载程序gif。@peter:在这种情况下,我对“从不”这个词感到满意。关键是,如果使用同步XHR,则无法显示加载程序gif,因为XHR请求会阻止页面的呈现。老实说,我认为在任何情况下都不能使用异步XHR;同步XHR有太多的缺点,无法证明在异步上使用它是正确的。我将它与window.location.href混合使用。我认为它是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'         
});