用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中格式化数字的方式。 使用点,这样您就可以将其作为数字进行操作。