使用Javascript从JSON获取数据

使用Javascript从JSON获取数据,javascript,jquery,json,Javascript,Jquery,Json,我有一个json输出,如下所示: {"Result" : [ { "Id" : "5214", "ParentReasonId" : "0", "Description" : "Billing & Payment", "SysName" : "Billing & Payment", "SysCa

我有一个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和描述的数据

    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,这很奇怪。