嗨,大家好我已經注意到有時候異常會在服務器端代碼上拋出 - 但是當涉及到ajax請求時,我該如何實現它,以便能夠通知用戶拋出了異常以及出了問題?我在後端使用Php。如何在客戶端使用AJAX查詢處理服務器端異常?
0
A
回答
2
這取決於AJAX方法返回的內容。如果它是純HTML,則可以輸出一條錯誤消息,並將其呈現給用戶。 如果它是JSON,那麼將一些字段添加到結構中,該結構可以包含錯誤消息或錯誤代碼,以便在檢索響應客戶端時處理它。
0
您的ajax請求可以響應500的服務器代碼,提醒AJAX調用者發生了可怕的錯誤。大多數庫實現onFailure回調,將在此事件中觸發。
0
我不知道你是否使用jQuery。我的答案是假設你使用jQuery,但是你可以將相同的概念應用到另一個JavaScript框架(或沒有)。通過這種方式,用戶實際上將在堆棧跟蹤,而不是一個一般錯誤消息(這是uselss反正)尋找:
$.ajax({
url: '/some_url',
type: 'post', //or get
data: ...,
success: function() { /* handle success */ },
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#error_dlg').dialog('open').trigger('initDlg', [XMLHttpRequest]);
}
});
$('#error_dlg').dialog({
autoOpen: false,
width: 550,
height: 400,
modal: true,
buttons: {
'Close': function() {
$(this).dialog('close');
}
},
open: function(event, ui) {
}
}).bind('initDlg', function(e, XMLHttpRequest) {
$('#error_stack_trace').append($('<div>').html(XMLHttpRequest.responseText));
});
0
東西我最近碰到一個可能會有所幫助的是:
http://php.net/manual/en/function.set-error-handler.php
基本上,如果PHP遇到錯誤,它將使用您的處理程序,您可以使用您的處理程序來處理異步請求或同步請求。
但是,你似乎也在你的代碼中拋出異常。粗略瀏覽一下,你也可以創建一個自定義的異常處理類。
http://www.w3schools.com/php/php_exception.asp
再次,你可以把它設計與異步或同步請求工作。在你的Javascript中,如果你使用JSON作爲響應,你可以簡單地設置一個錯誤標誌來提醒你的代碼有異常/錯誤,並且它會作出適當的響應。如果您使用直接的HTML作爲響應,則可能必須發送500錯誤(或其他變體之一,我對500代碼不熟悉),以便您可以使用onFailure
或failure
函數處理程序作爲其他人提到。
相關問題
- 1. 如何在客戶端處理SignalR服務器異常?
- 2. gwt與RequestFactory,處理客戶端和RequestFactoryEditorDriver服務器端異常
- 3. 在服務器端禁用aspxgridviews,如何在客戶端處理?
- 4. AJAX,客戶端JavaScript在服務器端JavaScript之前處理?
- 5. DWR異常處理在服務器端
- 6. 異常:java.io.UTFDataFormatException:服務器/客戶端
- 7. 服務器/客戶端java.net.SocketException異常
- 8. 服務器客戶端異常
- 9. 客戶端/服務器JVM_Bind異常
- 10. 在客戶端處理REST異常
- 11. java rmi服務器端異常處理
- 12. 處理客戶端和服務器端使用vb.net
- 13. 處理客戶端/服務器消息?
- 14. 服務器端處理或客戶端處理?
- 15. 客戶端處理vs服務器端處理,速度快嗎?
- 16. 客戶端與服務器端異步
- 17. 從服務器查詢客戶端
- 18. 應該在客戶端還是在服務器端處理OCR?
- 19. 如何在來自JQuery的Ajax調用期間處理服務器端異常?
- 20. 如何在客戶端狀態下編寫服務器端.ajax
- 21. Solr服務器端查詢預處理
- 22. HTTP調用 - 客戶端或服務器端處理
- 23. 服務器端的ASP.Net Ajax異常處理
- 24. CommunicationException類:客戶端與服務異常
- 25. 服務器端客戶端文件傳輸空指針異常
- 26. 在客戶端 - 服務器體系結構中的異常處理
- 27. 如何將CXF異常從服務器傳播到客戶端
- 28. GraphQL查詢使用在客戶端不同的服務器
- 29. 在客戶端MVC,誰應該處理客戶端 - 服務器通信?
- 30. severside處理vs客戶端處理+ ajax?
基本上它返回一個JSON對象 - 但是當拋出一個異常時,代碼將會停止,然後我會限制在catch塊中的任何東西 - 在這裏處理這個最好的方法是什麼? – Ali 2010-05-26 12:15:28
處理這個問題的最好方法是......捕捉異常:)圍繞可以用try-catch塊拋出的代碼並填充catch中的JSON錯誤。這是例外的美妙之處:你可以抓住它們並對它們採取行動。 – Palantir 2010-05-26 12:41:59