我正在使用MVC.net框架並運行到一個奇怪的問題與jQuery ajax調用。jquery.ajax間歇性調用獲取空數據和其他時間真實數據
我有一個頁面,允許用戶輸入金額,然後點擊'下一步'。當他們點擊「下一步」時,我會對服務器進行ajax調用,並通過JSON返回一些更新的信息。這都是非常標準的東西。
但是,奇怪的是與返回的JSON數據。 'data'變量(在回調中)有時是空的,有時它包含來自服務器的實際數據。奇怪的是,控制器的動作總是被調用,但返回的數據並不總是使它成爲ajax回調函數。它與超時間隔無關,因爲設置該值對問題沒有影響。
我經常可以觸發條件,當我調試動作代碼,但條件不經常發生時,我不調試。
有沒有人遇到過類似的問題,或者對變通或其他要調查的事情有任何建議?
var postbackUrl = "/Balance/Add?amt=" + $("#Amount").val();
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: postbackUrl,
data: "{}",
dataType: "json",
success: function (data,status,request) {
$("#x_amount").val(data.x_newBalance)
}
});
UPDATE: 在試圖獲得更深入的瞭解,我已經切換到使用3個變量版本回調。在所有情況下,狀態都是'成功'。有趣的是與請求。
該請求的狀態始終爲200,readyState爲4.與響應Body的區別在於。正如你所期望的那樣,當'data'爲null時,responseBody爲null,當'data'有效時,responseBody包含內容。
我想我需要弄清楚爲什麼responseBody被剝離出來。
超時值不起作用。所以它一定是別的東西。 – yamspog 2010-11-10 20:48:22
如果您的Ajax調用駐留在JS中,只要嘗試將其包含如下:
您正在使用JSON作爲請求內容類型,並仍然在查詢字符串中提供參數。爲什麼不直接使用:
還要注意,我用
result
作爲變量,以避免與data
混淆。來源
2010-11-11 05:21:48
我試過你的建議,但仍然得到相同的行爲。我用更多的細節更新了這個問題。 – yamspog 2010-12-12 19:08:20
我看到在遠程服務器不可用時調用的傳遞給$ .ajax的成功回調,在這種情況下數據值爲空。這看起來不正確,也許它與你所看到的有關。
更新我的問題是jQuery 1.4.2中的錯誤,也許你遇到了同樣的問題? http://bugs.jquery.com/ticket/6172
來源
2010-11-19 21:41:10
我不認爲這是問題,因爲http狀態爲200,但數據爲空。 – yamspog 2010-12-12 18:53:42