您的后端应用程序可能具有相对重定向,jquery ajax 可能无法处理该重定向。在这种情况下,位置标头将不包含域名,仅包含相对路径。由于某些(我不清楚;))原因,它可能会导致同源政策问题。有趣的是,将重定向更改为绝对路径应该可以解决问题。在 jQuery 1.11.1 上测试。
用代码来描述:
理论上的ajax调用:
$.ajax({
'url': '/your-url',
'method': 'post',
'data': form.serialize()
}).done(function(data) {
// something
}).fail(function(jqXHR, textStatus, errorThrown) {
// another something
});
所以在 /your-url 控制器中,你可能有类似的东西:
return $this->response->redirect('//same.domain/path');
或者
return $this->response->redirect('/path');
第一个会工作。第二个没有。
所以?
关键是您可能需要更改后端,但只需要一点点。如果您真的不想和/或以不同的方式处理它,则无需检查请求是否为 XmlHttpRequest。