感谢阅读。
我编写了一个通过jsonp调用的Web服务,并返回一个.Net 3.5 DataSet,然后我想用jquery解析它。看起来getJson()方法在解析json时工作得很好。以下请求 -
$.getJSON("http://localhost:80/ws.asmx/Example?format=json&callback=?", function(data) {
alert(data.d);
});
结果 -
{"Tables": [
{
"Rows": [
{
"CASE_TYP_CD": "M",
"CASE_TYP_DESC": "MOVING VIOLATION",
"AUTO_GENERATE": "Y",
"CONFIDENTIAL_FLG": "N"
},
{
"CASE_TYP_CD": "T",
"CASE_TYP_DESC": "TRUANCY/FAILURE TO ATTEND SCHOOL",
"AUTO_GENERATE": "Y",
"CONFIDENTIAL_FLG": "N"
},
{
"CASE_TYP_CD": "J",
"CASE_TYP_DESC": "JUVENILE",
"AUTO_GENERATE": "Y",
"CONFIDENTIAL_FLG": "N"
}...
嗯,我对整个json事情有点新意,我无法弄清楚如何获取节点中保存的值。
我以为它会像 -
$.each("CASE_TYP_CD", function() { //code goes here });
但这似乎不起作用。
有人可以帮我解决这个问题吗?
提前致谢!
答案 0 :(得分:1)
答案 1 :(得分:0)
您可能想要阅读一般的JavaScript对象文字(与JSON非常相似)。
我从JSON看到的是,在第一个表的第一行中获取CASE_TYP_CD的值 写
var result = <json>;
var val result.Table[0].Rows[0].CASE_TYP_CD;
是你想知道的吗?
答案 2 :(得分:0)
以下是使用$ .each()迭代对象的方法:
$.each(data.d.Tables, function(index, table) {
$.each(table.Rows, function(index, row) {
alert(row.CASE_TYP_CD);
});
});
答案 3 :(得分:0)
我非常确定DataSet在我的网络服务中的序列化方式。
每当我尝试一种方法,包括那里建议的方法,我会得到两个javascript错误 -
Message: 'length' is null or not an object
Line: 29
Char: 452
Code: 0
URI: js/jquery-1.4.2.min.js
和
Message: Object doesn't support this property or method
Line: 1
Char: 1
Code: 0
URI: /GetCaseTypes?format=json&callback=jsonp1273246775675
感谢您提出的所有建议,但看起来我的问题在于DataSet的序列化,而不在我的jquery代码中。
答案 4 :(得分:0)
我想出了问题,显然getJson方法实际上并没有将json字符串解析为java对象,就像它应该的那样。我只需要添加
var obj = $.parseJSON(data.d);
alert(obj.Table[0].CASE_TYP_CD);
一切都按预期工作。
感谢所有发布在这里的人。