我使用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