2012-08-13 46 views
0

是的,我一直模糊地试图用this questions example用jsfiddle来测试一些东西。我期望构建一个JQuery可排序小部件,但首先,我需要了解如何访问我创建的对象中的属性 - 在大量搞乱它之后,立刻画出了一个空白部分!如何在此Jsfiddle中使用JQuery访问我的JSON对象的属性?

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

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

编辑3

更新的jsfiddle链接到最新版本。

+0

很确定您的JSON无效。您正在使用[]数组表示法来定义一个对象。应该使用{}符号。 – Strelok 2012-08-13 08:53:31

+0

你是对的:)我正在验证并纠正它'发现'jsonlint后,当你评论:) – Kiada 2012-08-13 09:01:29

回答

1

您需要的JSON字符串解析成一个对象:

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

编辑:你的小提琴有语法错误。 JSON没有创建,因为jQuery中没有toJSON方法。为了使用每个迭代器来读取您的类别,他们需要像这样的数组:

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

感谢您的提示。我会在警告框中写出什么来输出Name属性? this.Name不起作用hrrmm。 – Kiada 2012-08-13 08:37:18

+0

用正确的jsfiddle链接编辑原始文章抱歉! – Kiada 2012-08-13 08:38:37

+0

你的小提琴充满了错误和未完成的代码,我不知道你想要做什么。 每个语句中,你可以访问你的对象是这样的: '$。每次(数据,功能(位置,值) { 警报(值);' – 2012-08-13 09:02:00