我在ajax电话中遇到了重定向网站的问题..
这是我想做的事情:
现在的问题是在服务器端,如果我使用:
header('Location: error.php');
它没有重定向页面,事实上它只是将该页面的数据(整个html)带到javascript成功函数。
问题是我在javascript端(调用ajax)和服务器端都创建了一个通用库。
我需要通过服务器端重定向页面。我尝试添加
的js代码 window.location='error.php';
但没有取得任何成功
答案 0 :(得分:3)
为什么不返回Ajax查询可以理解的错误?
if ($error)
{ header("HTTP/1.1 500 Internal Server Error");
echo "A database error has occurred. etc.etc.";
die();
}
这将触发Ajax请求的错误回调(如果在jQuery中)。回显的文本将出现在响应正文中。
您还可以根据具体情况寻找更合适的status code。
答案 1 :(得分:2)
我认为你的ajax lib中应该有一个错误处理程序。在服务器中,您将在标头中发回正确的html或错误代码,并在正文中重定向到URL。在ajax lib中,标头中的错误代码将触发错误处理程序。在错误处理程序中,您可以使用window.location ='page_returned_by_server'
重定向答案 2 :(得分:0)
如果发生错误,只需回显errorpage的url。例如,使用JSON:
服务器端:
echo '{error: "error.php"}';
客户端:
var xhr = $.ajax({ url: "example.php" })
.success(function() {
var obj = JSON.parse(xhr.responseText)
if obj.error {
window.location = obj.error;
}
})
答案 3 :(得分:0)
您是否考虑过使用$ .ajaxError()全局AJAX事件?
$(document).ajaxError(function(event, jqxhr, settings, exception) {
alert('An AJAX error occurred in script: ' + settings.url);
console.log(event, jqxhr, settings, exception);
});
在你的主JS库中可以做到这一点,你可以添加你喜欢的任何类型的重定向。