2014-01-22 41 views
0

假設我有一個帶有4個文本框的網頁。爲了保存數據,用戶必須使用自動完成(例如typeahead.js)來填充它們,他不能輸入不在數據庫內的東西。如何處理AJAX中例外的代碼 - 最佳實踐

現在,如果某個ajax字段未能加載,您將如何顯示錯誤,以及您將在哪裏檢查錯誤?現在我在我的控制器中使用類似這樣的東西:

if (someOperation.Success) 
{ 
resultToReturn.Data = new {success = true, message = "",data = dataToSerializeAndReturn}; 
} 
else 
{ 
resultToReturn.Data = new { success = false, message = "Some error message" }; 
} 

並檢查返回的JSON中的「成功」。

問題是 - 有沒有更好的方法?

在此先感謝。

此致敬禮。

+0

「他不能輸入不在數據庫內的東西」如何?你逼迫它嗎?以及爲什麼Ajax字段無法加載?你的用例還不清楚。 – Falaque

+0

@Falaque: 對不起,我的意思是:我得到了「城市」表,用戶必須從那裏選擇一個城市。當他進入某個東西時,他會從前端獲得線索,並且他需要選擇其中的一個。如果他嘗試輸入不在數據庫中的東西,他將無法保存表格。 至於「爲什麼Ajax字段會失敗」...例如 - 我的數據庫連接將會失敗,或者我的代碼中會有一個會突然拋出異常的錯誤 - 我正在考慮「最糟糕的情況」 - 也許我有點偏執;] – user2384366

回答

1

如果您使用的是jQuery,這是mvc .Net的默認方法,您應該捕獲客戶端的ajax錯誤。如果你在服務器端發現錯誤並且發送一個有效的Json到你的用戶界面,那麼你發送的這些調用的正確ajax響應並不是一個ajax錯誤。我的理解是嘗試不成功的「虛假」,讓服務器發送適當的錯誤,並在客戶端工作。

+1

嗯,你是說,我應該只是序列化我的異常到JSON並將其發送到ajax?我必須說,我沒有想到這個簡單的方法;]我將不得不測試它 - 感謝這個想法。 (最簡單的答案很難看,有時候) – user2384366

+0

乾草也發佈解決方案,如果它的工作。 – Falaque

1

一旦你從服務器的響應:

  • 檢查是否成功的假。

  • 如果它的錯誤,你知道它的錯誤。

  • 您可以使用javaScript彈出窗口來顯示異常。或者可以選擇顯示警報框。