2012-04-22 75 views
1

$ .ajax有兩個回報:成功和錯誤。
如果$ .ajax調用一個php模塊,如何分配響應成功並返回錯誤?
例如:
如果這行代碼返回一個錯誤:ajax + php另一個正確的錯誤處理建議

$connection = mysql_connect($server,$user,$password); 

我想收到錯誤在Ajax的錯誤
如果PHP的模塊的執行是正確的,那麼我想在ajax-sucess中收到一條消息
如果我從PHP發送echo「message」消息,我總是收到ajax-success消息,我必須測試什麼是成功,什麼不成功!

+0

失敗時,請勿回顯....使用trigger_error。 – itachi 2012-04-22 13:17:13

+0

你的意思是,用echo,回調會成功,用trigger_error,回調會出錯嗎? – Bertaud 2012-04-22 21:08:58

+0

給你一個低於 – itachi 2012-04-23 06:06:57

回答

2

jQuery ajax documentation

error(jqXHR, textStatus, errorThrown)
A function to be called if the request fails. ...

在服務器端請求已成功。通常情況下,回調將成爲成功處理程序,而不是錯誤處理程序。

您應該處理ajax-success處理程序中的mysql_connect錯誤。

+0

的工作答案,你可以觸發一個錯誤,併發送狀態作爲錯誤,這將觸發ajax錯誤功能。例如在yii中,只需在服務器端拋出一個CHttpException,並且ajax錯誤就會觸發。所以「因此,結果回調將永遠是成功處理程序,而不是錯誤回調。」是一種誤解。您只需創建一個自定義錯誤處理程序。 – itachi 2012-04-22 13:27:42

+0

但是如何從PHP發送錯誤狀態! – Bertaud 2012-04-22 13:29:07

+0

看到我上面的評論。 – itachi 2012-04-22 13:32:30

0

我認爲Ajax錯誤回調將返回錯誤只有在AJAX不能正常工作,而不是如果事情(比如在你的情況下,SQL命令),在你的(成功「ajaxed」)腳本做不行。

但是,要處理您的ajax成功回調函數中的數據的sql錯誤,您可能可能解析返回的數據。我的意思是你可以在你的腳本輸出中創建一個id ='sql_error'的div,然後閱讀這個div的內容。如果沒有sql錯誤,那麼你的錯誤div必須有零內容。

這樣的事情,也許(未經測試):

$.get(url, function (data) { 
    var sql_error = $("#sql_error", data).html(); 
    // or var content = $("#error", $(data)).html(); 

    // you can then show output in the way you want, depending on sql_error 
}); 
0

試試這個....(測試)。在服務器端的條件中使用此錯誤。

header('403 Forbidden', true, 403); 
die('forbiden to log in. No authorization'); 

這將引起誤差函數。根據您的需要放置狀態代碼和消息。