2013-10-18 46 views
0

我正在使用jQuery在ajax/php中的連接模塊。我需要拋出一個異常從PHP到ajax,以表明電子郵件或密碼是否爲假。在jQuery中使用錯誤函數/ ajax

我在網上搜索了一種使用jquery的ajax提出的'error'函數的方法。找到了一些解決方案,他們都沒有工作。

試過拋出一個php異常:錯誤函數沒有捕獲它;嘗試通過發送json編碼數據來避免使用錯誤函數:在成功函數中沒有使用它的方法... 錯誤函數似乎只捕獲服務器錯誤,這真的不是有趣的。

任何人都可以幫我找到一種方法來通過ajax從php通信錯誤?

+0

你想要什麼樣的錯誤 – Nandakumar

回答

4

在php對4XX或5XX的響應中設置請求statuscode。這會讓你最終回調error/fail

我並不一定必須是列表中的值。例如,你可以創建自己:

StatusCode: 550 
StatusText: "My Custom Error" 

其中,如果我沒有記錯,應該是這樣的PHP:

header('HTTP/1.0 550 My Custom Error'); 

最後,發送錯誤信息給客戶,通知他們什麼地方出了錯。您可以放置​​在信息的標題,或使用序列json_encode()

​​

客戶端異常:

$.ajax({ 
    url: 'page.php', 
    data: { 'some_bad_condition': true } 
}).done(function(data){ 

    console.log('success!', data); 

}).fail(function(jqXhr){ 

    var errorObject = $.parseJSON(jqXhr.responseText); 
    console.log('something went wrong:', errorObject); 
    //jqXhr.status === 550 
    //jqXhr.statusText === 'My Custom Error' 

}); 

不要忘記你的PHP文件中指定正確的MIME類型。這樣jQuery就會知道這是一個JSON響應,沒有你明確地指定它。

header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 
+0

你也可能想要在響應中包含錯誤文本。 –

+0

如何從ajax獲取'我的自定義錯誤'? –

+1

@YonnTrimoreau看我的更新。如果你喜歡,你可以使用'success' +'error'回調。 – Johan

0

嘗試使用這個插件:

給ajaxForm

Get it here.

阿賈克斯處理提交表單,如果有錯誤將被使用錯誤回調。

我想我以前使用過這個。這很容易使用,並檢查您的返回狀態代碼是否正確在您的PHP。

+0

謝謝,但是通過向他們發送簡單易用的插件來低估其他成員,而不是教他們如何自己做這件事,這是相當侮辱的。 –