我使用jQuery來調用asmx並返回一些數據。我做了這樣調用jQuery和在回調中解析JSON
function getRequestInfo(event) {
var id = $('#<%= RequestDaysId.ClientID %>').val();
var formattedId = "{'id': '115'}";
$.ajax({
type: "Post",
url: "services/VacationServices.asmx/GetVacationInfo",
data: "{'id': '" + id + "'}",
dataType: "json",
contentType: "application/json; charset=utf-8",
processdata: true,
success: function(data) {
$('#<%=Note.ClientID %>').val(data.Note);
$('.pendingrequestinfo').show().fadeIn(2000);
},
error: function(result, errortype, exceptionobject) {
$('.failureMessage').fadeIn(2000).fadeOut(2000);
}
})
};
一切似乎做工精細,我設置我的成功函數一個破發點,並檢查數據對象和看到這一點。
"{"Note":"this is a note","dayInfo":[{"ShortDate":"3/4/2010","DayType":"Vacation","HalfDay":""},{"ShortDate":"3/5/2010","DayType":"Vacation","HalfDay":""}]}"
當我嘗試從JSON中獲取值時,問題出現了。如果我做了類似數據的事情,請注意,我還未定義。
現在已經很晚了,這是星期六,我一整天都在這裏,當談到解析我的JSON時,我確實希望推動正確的方向。
編輯: 我使用Asp.net和JavaScriptSerializer.Serialize()來創建JSON。當我設置一個斷點並檢查'data'對象時,它看起來有一個屬性d,其中包含應該是JSON的字符串。
ANOTHER編輯: 如果我做這樣的事情在我的成功
$('#<%=Note.ClientID %>').val(data.d.[0]);
我得到的{大括號。我想我得到的是一個字符串而不是JSON,但它似乎違背了jquery api在數據類型設置爲JSON時返回值的狀態。
謝謝你們。 Jim
使用ASP.NET的JavaScriptSerializer,data.d是您希望包含在數據中的對象。我忘記了爲什麼ASP.NET將JSON包裝到一個d對象中,但答案是在「在Microsoft®Platform上開發面向服務的AJAX應用程序」的前幾章。我會看看我是否可以找到答案,或谷歌'asp.net data.d json'。此外,你的對象被包含在data.d中而不是數據是ASP.NET的錯,而不是jQuery的。 – 2010-02-21 00:53:11