【问题标题】:How can I access the properties of my JSON object using JQuery in this Jsfiddle?如何在这个 Jsfiddle 中使用 JQuery 访问我的 JSON 对象的属性?
【发布时间】:2012-08-13 08:29:16
【问题描述】:

是的,我一直在模糊地尝试使用 this questions example 来用 jsfiddle 测试一些东西。我正在寻找构建一个 JQuery 可排序小部件,但首先我需要了解如何访问我正在创建的对象中的属性 - 在经历了很多混乱之后,现在画了一点空白!

Live Fiddle!

$('#ParentCategoryId').change(function() {
    var data =
{
"categories": {
    "category1": {
        "Name": "Maps",
        "Id": 3,
        "orderInList": 1
    },
    "category2": {
        "Name": "Books",
        "Id": 2,
        "orderInList": 2
    }
}
};

$.ajax({
    url: 'http://jsfiddle.net/echo/jsonp/',
    dataType: 'jsonp',
    data: data,
    success: function(data) {
        show_response(data);
    },
    type: 'GET'
});
});            

function show_response(data) {
    $.each(data, function()
    {        
        alert(/**How could I access say, category1's Name property in here?**/);
    };   

编辑 1

抱歉,没有获得完整的 Jsfiddle 链接,已保存并编辑。

编辑 2

使用 JsonLint 创建有效的 Json。现在我可以让警报执行,但我不确定如何访问其中的属性!

编辑 3

更新了最新版本的 Jsfiddle 链接。

【问题讨论】:

  • 很确定您的 JSON 无效。您正在使用 [] 数组表示法来定义对象。应该使用 {} 表示法。
  • 你是对的 :) 当你发表评论时,我正在“发现”jsonlint 后验证和更正它:)

标签: javascript jquery json object jsfiddle


【解决方案1】:

你需要将JSON字符串解析成一个对象:

function show_response(data) {
    data = $.parseJSON(data);
    $.each(data, function(position, value)
    {        
       alert(value.name);
    };

编辑:您的小提琴有语法错误。没有创建 JSON,因为 jQuery 中没有 toJSON 方法。为了使用 each 迭代器读取您的类别,它们需要是一个数组,例如:

categories = [name: "Book", value: ...], [name: "Movie", value: ...]

【讨论】:

  • 感谢您的提示。我会在警告框中写什么来输出 Name 属性? this.Name 不起作用 hrrmm。
  • 你的小提琴充满了错误和未完成的代码,我不知道你到底想做什么。在每个语句中,您可以像这样访问您的对象:$.each(data, function(position, value) { alert(value);
  • 抱歉,JSON 无效。现在可以了,不过谢谢!
猜你喜欢
  • 2021-07-05
  • 2021-04-29
  • 2017-09-24
  • 2022-11-17
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
相关资源
最近更新 更多