2011-02-27 33 views
1

我面臨的重定向的網站的問題(使用jQuery製造)在瀏覽器重定向而在Ajax調用..如何將Ajax調用PHP中

這裏是我想做的事:

  1. 對服務器進行ajax調用。
  2. 它進入某個過程,如果發生錯誤,我應該發送到錯誤頁面,否則恢復。在服務器端時,

現在的問題是,如果我使用:

header('Location: error.php'); 

它不重定向頁面,事實上它只是帶來了該頁面的數據(全HTML)的javascript成功功能。

問題是,我已經在JavaScript端(稱爲ajax)和服務器端都做了一個通用庫。

我需要通過服務器端重定向頁面。我嘗試添加了

window.location='error.php'; 

一個js代碼,但沒有得到任何成功

回答

3

爲什麼不返回一個錯誤,阿賈克斯查詢可以瞭解呢?

if ($error) 
{ header("HTTP/1.1 500 Internal Server Error"); 
    echo "A database error has occurred. etc.etc."; 
    die(); 
} 

這將觸發Ajax請求的錯誤回調(如果在jQuery中)。回顯文本將在響應主體中。

根據具體情況,您還可以尋找更合適的status code

2

我想你應該在你的ajax庫中有一個錯誤處理程序。在服務器中,您發送正確的html或標題中的錯誤代碼,以及要重定向到正文中的URL。在ajax lib中,頭文件中的錯誤代碼將觸發錯誤處理程序。在錯誤處理程序中,您可以使用window.location ='page_returned_by_server'來重定向。

0

如果發生錯誤,只需回顯錯誤頁面的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; 
     } 
}) 
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..