如何在php中的ajax调用(使用jQuery)中重定向浏览器

时间:2011-02-27 22:54:27

标签: php jquery ajax

我在ajax电话中遇到了重定向网站的问题..

这是我想做的事情:

  1. 对服务器进行ajax调用。
  2. 进入某个过程,如果发生错误,我应该发送到错误页面,否则恢复。
  3. 现在的问题是在服务器端,如果我使用:

    header('Location: error.php');
    

    它没有重定向页面,事实上它只是将该页面的数据(整个html)带到javascript成功函数。

    问题是我在javascript端(调用ajax)和服务器端都创建了一个通用库。

    我需要通过服务器端重定向页面。我尝试添加

    的js代码
     window.location='error.php';
    

    但没有取得任何成功

4 个答案:

答案 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库中可以做到这一点,你可以添加你喜欢的任何类型的重定向。

Here's the official jQuery documentation..