用jquery获取json数据

嘿家伙我想知道如何通过ajax调用获取json数据。

我试过这个,但似乎行不通:P

首先,我创建了一个JavaScript文件,放在我的json数据元素中:

var food = [ {'name':'bread', 'price':'7,25'}, {'name':'fish', 'price':'9,00'} ]; 

我把它保存为food.js.

然后我尝试从另一个文件进行ajax调用,这是我的代码:

 $(document).ready(function(){ $.ajax({ async: false, dataType: "json", type:'GET', url:"food.js", success: function(data) { var result = data.food.name; alert(result); }); }}); }); 

有任何想法吗?

提前致谢 ;)

首先,你的例子中有一个语法错误 – $.ajax调用上有太多关闭括号,虽然我猜这只是一个错字。

在你的JSON中, food是一个数组,所以你需要使用索引器来获取其中对象的属性:

 success: function(data) { var result = data.food[0].name; // = "bread" alert(result); }); 

试试这个

 $(document).ready(function() { $.ajax({ async: false, dataType: "json", type:'GET', url:"food.js", success: function(data) { var result = data.food[0].name; alert(result); } }); }); 

您需要遍历返回的data因为它是一个数组:

 $.each(data,function(i,val) { alert(data[i].name); }); 

我喜欢人们完全无视你的“food.js”不是JSON字符串这一事实,它是JavaScript代码。 这可能适用于老式的基于eval的“JSON”,但是使用jQuery AJAX,你的目标文件应该是普通的JSON。 从一开始就删除var food = ; 从最后。

然后你可以访问data.food[0].name ;

在这种情况下,您试图通过ajax获取另一个javascript文件。 为此,您可以使用Ajax GetScript( 参见此处 )在页面中“包含”您的脚本(food.js)。

当您直接请求json文件时,您的代码更好。

您可能希望在jquery中使用getJSON函数: http : //api.jquery.com/jquery.getjson/

 $.getJSON( "food.json", function( data ) { //here your callback } 

默认情况下,它会将数据类型设置为json ,将方法设置为GET

你也应该使用.json扩展名而不是你jsons的js扩展名。 并将其格式化为适当的json:

 { "food": [ { "name": "bread", "price": 7.25 }, { "name": "fish", "price": 9.00 } ], } 

您可以使用此网站来帮助您格式化jsons: http : //www.jsoneditoronline.org/

你尝试调用元素的方式不起作用。 您获得的数据是一个数组。 在回调中,您可以尝试这样做:

 console.log(data) console.log(data.food) console.log(data.food[0]) console.log(data.food[0].name) console.log(data.food[0].price) 

最后,请注意您使用昏迷格式化数字,这不是您在javascript中格式化数字的方式。 使用点,这样您就可以将其作为数字进行操作。