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