我正在使用来自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请求完成之前页面只会更改。
async:false
POST
是括号。 href不是一个函数,因此尝试调用它window.location.href("/step2.php")是一个TypeError。
href
window.location.href("/step2.php")
TypeError
href像下一行一样分配给您,或者更好地使用location.assign():
location.assign()
location.assign('/step2.php');
虽然您可以直接分配给location的属性(location.href='...';)来促使浏览器导航,但我建议您不要这样做。
location
location.href='...';
在内部,location.assign()无论如何都只是调用,并且分配给属性并不总是在所有浏览器中都具有相同的行为。
至于,async:false, 从来没有 做到这一点。如果您发出同步XHR请求, 那么您做错了 。 报告的IE9挂起的8.4%是由于同步XHR阻止了浏览器。
鉴于您已在回调函数中添加了该对象location,因此在POST完成之前不会进行分配,因此我不确定“在POST完成之前页面会更改”的含义。(您是否忘记取消表格的submit?)
submit