2011-11-03 73 views
1

當我使用Firebug進行調試時,看到成功後跳轉到錯誤部分的控件。我無法找出發生了什麼問題。請指出這個代碼有什麼問題。.ajax()中的成功函數不會執行

$(function(){  
    $.ajax({ 
       type: "POST", 
       url: "service/MyService.asmx/GetAsgInfo", 
       data: "{id: " + parseInt($('#AsgId').val()) + "}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        // var s = eval('(' + msg.d + ')'); 
         alert(msg.d[0].SubmittedCount); 
         }, 
       error: function (e) { 
        alert("error : " + e); 
       } 
      }); 
}); 

POST:

{id: 5301} 

迴應:

 {"d":[{"__type":"Proxies.AFARServiceRef.AssignmentInfo","ExtensionData": 
    {},"AssignDate":"\/Date(1319526000000)\/","AssignFileName":null,"ClaimId":"MH001025","ClaimantName":"Deborah C Plaid","FirstContactDate":"\/Date(1319526000000)\/","FirstContactTime": 
{"Ticks":420000000000,"Days":0,"Hours":11,"Milliseconds":0,"Minutes":40,"Seconds":0,"TotalDays": 
0.4861111111111111,"TotalHours":11.666666666666666,"TotalMilliseconds":42000000,"TotalMinutes":700,"TotalSeconds":42000},"Id":5301,"InspectionDate":"\/Date(1319612400000)\/","StatusId":1, 
"SubmittedCount":4,"UploadedCount":14}]} 
+0

檢查MyService.asmx返回的狀態代碼 –

+0

這正是您如何得到響應的原因嗎? ''TotalMinutes':7'之後不應該有換行符,這會產生一個錯誤(它不是有效的JSON)。 –

+0

@MichaelMior HTML標籤下的狀態碼(Firebug)說302找到 – BumbleBee

回答

1

除了使用成功和錯誤功能,請嘗試使用完整:

complete: function(jqXHR, textStatus) { 
    alert(textStatus); 
} 
+0

textSTatus包含字符串「Success」。應該如何繼續進一步獲取數據。 – BumbleBee

+3

可以做這只是一個測試,但我不建議它的生產。他們希望代碼在成功時作用於響應,如果不成功則捕獲錯誤。完整的參數對於「不管什麼,運行這個」代碼更有用。如果他們使用完整的,他們將不得不寫一個方法來處理錯誤。 –

+0

@GregPettit,BumbleBee正在處理這個[ticket]中提到的問題(http://bugs.jquery.com/ticket/9399)。我推薦'完整'(或新的'總是'),因爲這是一個全部的問題,包括服務器端錯誤。如果警報顯示「成功」,那麼響應不會被解釋爲JSON就會出現問題。 –

0

我有一個類似的問題與處理JSON和它呃,我沒有在服務器端正確設置內容類型。即使有效的json在標有「text/plain」或甚至「text/json」的響應中也會引發奇怪的錯誤。確保你的內容類型是正確的。