我正在使用来自 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
请求完成之前发生更改。
就是括号。
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
?)
window.location.href = "/step2.php"
就好了。
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'
});
$.ajax({ 类型:“帖子”, 网址:phpUrl,
数据:数据,
异步:假,
成功:函数(){
window.location.href(fullURL);
},
dataType:'json'
});