2010-01-21 17 views
21

在出現故障的情況下,代碼都類似:

error: function(msg) 

來自哪裏的msg

編輯:

我使用這個函數($阿賈克斯)來調用Web服務。所以,如果誰投下來的話可以向我解釋,味精從哪裏來,這將是偉大的!我是否將其設置爲Web服務?如果是這樣,怎麼樣?請不要複製和粘貼定義。

+2

爲什麼這得到downvoted? – Jason 2010-01-21 22:27:03

+0

參數msg是用於發出請求的XMLHttpRequest對象jquery。無論它被稱爲* msg *還是* xhr *或其他什麼都沒關係,這就是第一個(或唯一的)參數。在你得到這個的例子中,他們應該使用* xhr *或除* msg *之外的東西,這是令人困惑的。我建議你改變它。 是的,我不知道爲什麼downvotes。這是一個很好的問題。我甚至會在這裏投下一票。 。 。 – 2010-01-22 00:39:43

回答

2

該消息是您在ajax調用中查詢的實際服務器端函數的返回值。

通過這種方式,您可以獲得有關服務器端代碼是否執行了應該執行的操作的錯誤或任何其他信息。

說,如果你返回一個字符串「成功」

msg.val()將等於「成功」

希望幫助

0

阿賈克斯返回變量(在這種情況下,「味精」)是返回的輸出從AJAX調用 - 在ajax錯誤的情況下,這可能是一個服務器錯誤。

20

從jQuery文檔:

error(XMLHttpRequest, textStatus, errorThrown) Function

一個函數,如果請求不被調用。該函數傳遞三個參數:
- XMLHttpRequest對象,
- 描述錯誤的發生類型的字符串,並
- 一個可選的異常對象,如果一次發生。
第二個參數(除了null)的可能值是「超時」,「錯誤」,「未修改」和「解析錯誤」。這是一個Ajax事件。

當您僅指示一個參數時,它將是xmlHttpRequestObject。你可以從中得到一些很好的信息。可悲的是,大多數文檔沒有你設置正確。一個好的默認模板是:

error:function (xhRequest, errorText, thrownError) 

一些好的信息,你可以從xhRequest得到的是:

  • .status:404: 「未找到」,500: 「服務器錯誤」。這有時可以是一個很大的幫助。
  • .responseText是來自服務器的信息,在出現錯誤時通常無用,但有時可能會有所幫助。

第二個值,一個字符串,有時是有幫助的。啊,我想文件中提到可能的值。

第三個參數,只要我檢查出來,一直未定義。我不認爲這是有用的。

+0

你是哈希標記不起作用(不幸) – 2010-01-21 22:26:33

0

其實,正確的方法是:

error: function(req, status, error) { 
} 

從jQuery API:

的函數,如果請求不能被稱爲 。 函數傳遞三個參數: XMLHttpRequest對象,描述 發生的錯誤類型的字符串 ,以及可選的異常 對象(如果發生)。可能的 第二個參數 (除了空值)的值爲「超時」,「錯誤」, 「未修改」和「解析錯誤」。這 是一個Ajax事件。

7

我覺得第三個參數errorThrown在錯誤回調函數

error(XMLHttpRequest, textStatus, errorThrown) 

正是從服務器發送文本錯誤消息。

因此,如果在服務器上設置:

Response.Status = 403; 
Response.StatusDescription = "Password is not correct"; 

在客戶端上您將獲得:對Asp.net MVC

textStatus => "error", 
errorThrown => "Password is not correct" 

服務器部分將是:

return new HttpStatusCodeResult(403, "Password is not correct");