好的,我有一个json输出,如下所示:
{"Result" : [
{
"Id" : "5214",
"ParentReasonId" : "0",
"Description" : "Billing & Payment",
"SysName" : "Billing & Payment",
"SysCategory" : "Billing & Payment",
"ClientId" : "924",
"DispositionCount" : "6",
"IsActive" : true,
"ChildReasonCount" : "8",
"Attributes" : [],
"SortOrder" : "0",
"CreatedBy" : null
}
]
}
我想从中提取id和description的数据。
jQuery("#chained_child").cascade("#chained", {
ajax: { url: 'Customhandler.ashx?List=MyList' },
template: commonTemplate,
match: commonMatch
});
function commonTemplate(item) {
return "<option Value='" + item.Result.Id + "'>"
+ item.Result.Description + "</option>";
};
但是对于我的生活,我无法让它回归我正在寻找的价值。我知道这是一些蠢货,但我正在撞墙。有人可以帮忙吗?
答案 0 :(得分:6)
如果检查JSON字符串,则Result
对象实际上是一个大小为1的数组,其中包含一个对象,而不仅仅是一个对象。您应该删除额外的括号或使用以下内容引用您的变量:
item.Result[0].Id
为了使用item.Result.Id
引用您的变量,您需要以下JSON字符串:
{
"Result" :
{
"Id" : "5214",
"ParentReasonId" : "0",
"Description" : "Billing & Payment",
"SysName" : "Billing & Payment",
"SysCategory" : "Billing & Payment",
"ClientId" : "924",
"DispositionCount" : "6",
"IsActive" : true,
"ChildReasonCount" : "8",
"Attributes" : [],
"SortOrder" : "0",
"CreatedBy" : null
}
}
答案 1 :(得分:1)
使用JSON funkyness极大地帮助我的一件事是在Firebug中设置断点,让你逐步完成结果对象,并查看其结构。
答案 2 :(得分:1)
item.Result [0] .Id就像Sebastian所说的那样 - 但是只有在“item”实际分配了一个值时它才有效。我的猜测是不是。
在你的commonTemplate函数中尝试执行console.log(item)并查看结果是什么。
答案 3 :(得分:1)
就我在plugin page上看到的那样,发送给模板回调的参数是一个 来自JSON响应的 item ,它是一个Array。您的JSON响应是一个对象。我猜你没有发送正确的JSON响应。但是,由于我从未使用过这个插件,所以要花一点时间。
无论如何,如果我是对的,你的反应应该是:
[
{
"Result" :
{
"Id" : "5214",
"ParentReasonId" : "0",
"Description" : "Billing & Payment",
"SysName" : "Billing & Payment",
"SysCategory" : "Billing & Payment",
"ClientId" : "924",
"DispositionCount" : "6",
"IsActive" : true,
"ChildReasonCount" : "8",
"Attributes" : [],
"SortOrder" : "0",
"CreatedBy" : null
}
}
]
答案 4 :(得分:1)
Ionut G. Stan的回答是正确的。您的json输出不是cascade插件的正确格式。
如果您不想更改json,可以使用dataFilter
设置中的ajax
选项来增加数据。
我在这里设置了一个有效的演示:http://jsbin.com/ebohe(可通过http://jsbin.com/ebohe/edit进行编辑)
以下是相关的javascript:
$(function(){
$('#chained_child').cascade(
'#chained',
{
ajax: {
url: 'Customhandler.ashx?List=MyList',
dataFilter: extractResult
},
template: customTemplate,
match: customMatch
}
);
function extractResult(data) {
return eval('(' + data + ')').Result;
}
function customTemplate(item) {
return $('<option />')
.val(item.Id)
.text(item.Description);
}
function customMatch(selectedValue) {
return this.ParentReasonId == selectedValue;
}
});
答案 5 :(得分:0)
您可能需要查看IBM的这个JSON教程: