使用Javascript从JSON获取数据
我有一个json输出,如下所示:使用Javascript从JSON获取数据,javascript,jquery,json,Javascript,Jquery,Json,我有一个json输出,如下所示: {"Result" : [ { "Id" : "5214", "ParentReasonId" : "0", "Description" : "Billing & Payment", "SysName" : "Billing & Payment", "SysCa
{"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和描述的数据
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>";
};
jQuery(“#chained_child”).cascade(“#chained”{
ajax:{url:'Customhandler.ashx?List=MyList'},
模板:commonTemplate,
匹配:commonMatch
});
功能模板(项目){
返回“”
+item.Result.Description+“”;
};
但就我的一生而言,我无法让它回报我所追求的价值。我知道这是一件很愚蠢的事情,但我正在碰壁。有人能帮忙吗?如果检查JSON字符串,您的
结果
对象实际上是一个大小为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
}
}
如果检查JSON字符串,则
结果
对象实际上是一个大小为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
}
}
在JSON funkyness方面对我有很大帮助的一件事是在中设置断点,让您逐步浏览结果对象并查看其结构。在JSON funkyness方面对我有很大帮助的一件事是在中设置断点,让您逐步浏览结果对象,查看它的结构。您可能想看看IBM的JSON教程:
您可能想看看IBM的JSON教程:
item.Result[0].Id的工作原理与Sebastian提到的一样-但它仅在实际为“item”赋值时才起作用。我猜不是
在commonTemplate函数中,尝试执行console.log(item)并查看结果。item.result[0].Id的工作方式与Sebastian提到的相同-但是,它仅在实际为“item”分配了值时才起作用。我猜不是 在commonTemplate函数中,尝试执行console.log(item)并查看结果。据我在上看到的,发送到模板回调的参数是 来自JSON响应的项,它是一个数组。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
}
}
]
据我在上看到的,发送到模板回调的参数是
来自JSON响应的项,它是一个数组。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
}
}
]
久特·G·斯坦的回答是正确的。您的json输出不是级联插件的正确格式 如果不想更改json,可以使用
ajax
设置中的dataFilter
选项来增加数据
我已经在这里设置了一个工作演示:(可编辑通过)
以下是相关的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;
}
});
$(函数(){
$(“#链接的_子项”).cascade(
#锁链",,
{
阿贾克斯:{
url:'Customhandler.ashx?List=MyList',
数据过滤器:提取结果
},
模板:自定义模板,
匹配:自定义匹配
}
);
函数提取结果(数据){
返回eval(“(“+数据+”)”)。结果;
}
功能自定义模板(项目){
返回$('')
.val(项目Id)
.文本(项目说明);
}
功能自定义匹配(selectedValue){
返回this.ParentReasonId==selectedValue;
}
});
久特·G·斯坦的回答是正确的。您的json输出不是级联插件的正确格式
如果不想更改json,可以使用ajax
设置中的dataFilter
选项来增加数据
我已经在这里设置了一个工作演示:(可编辑通过)
以下是相关的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;
}
});
$(函数(){
$(“#链接的_子项”).cascade(
#锁链",,
{
阿贾克斯:{
url:'Customhandler.ashx?List=MyList',
数据过滤器:提取结果
},
模板:自定义模板,
匹配:自定义匹配
}
);
函数提取结果(数据){
返回eval(“(“+数据+”)”)。结果;
}
功能自定义模板(项目){
返回$('')
.val(项目Id)
.文本(项目说明);
}
功能自定义匹配(selectedValue){
返回this.ParentReasonId==selectedValue;
}
});
我不认为是语法错误把你搞砸了?当我发出警报(item.Result.Id)时,我会返回未定义的状态。所以我不完全确定。JSON是否作为字符串从某处返回?你确定它已经被评估成一个物体了吗?按警报查找(项目类型);我不认为是语法错误把你搞砸了?当我发出警报(item.Result.Id)时,我得到了未定义的结果。所以我不完全确定。JSON是否作为字符串从某处返回?你确定它已经被评估成一个物体了吗?按警报查找(项目类型);我试过了,结果一无所获。我得到错误项。结果未定义?我知道数据是通过网络传输的,不知道该怎么做。我试过了,但没有结果。我得到错误项。结果未定义?我知道数据是通过网络传输的,但不确定该如何处理。这肯定有帮助。看起来这个项目里面唯一的东西就是一个非常奇怪的url,这确实很有帮助。看起来,项目中唯一的东西就是url,这很奇怪。