2011-11-03 76 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”的响应中也会引发奇怪的错误。确保你的内容类型是正确的。