用jquery获取json数据

时间:2014-05-09 13:05:46

标签: javascript jquery ajax 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);

        });

    }});

});

有什么想法吗?

提前致谢;)

6 个答案:

答案 0 :(得分:3)

首先,您的示例中存在语法错误 - $.ajax调用中的结束括号太多,但我认为这只是一个错字。

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

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

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

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

您还应该使用.json扩展名而不是js扩展名为jsons。并将其格式化为适当的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中格式化数字的方式。使用点,这样您就可以将其作为数字进行操作。

答案 4 :(得分:0)

我喜欢人们完全无视你的食物和食物的事实。不是JSON字符串,它是JavaScript代码。这可能适用于基于eval的旧学校" JSON",但是使用jQuery AJAX,您的目标文件应该是普通的JSON。从头开始删除var food =,从结尾删除;

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

答案 5 :(得分:0)

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

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