如何使用jquery和json访问特定的json对象?

时间:2010-07-08 12:16:33

标签: jquery json

我在尝试使用jQuery和JSON返回特定记录时遇到问题。我将一个变量传递给函数,并且只想输出与执行函数时设置的id匹配的数据。

现在,我的功能如下:

function getEffectsData(myNum){
    $.getJSON("jsonscript.php", { id: +myNum },function(data){
       var x = data.x;
       //DO SOME STUFF
    });
}

JSON输出如下所示:

{"stuff": [ { "id":1, "x":3, "y":6, "z":-6 },{ "id":2, "x":2, "y":7, "z":-3 }]}

我唯一知道的是正确的变量被传递给函数。之后,没有任何反应。非常新的,所以任何帮助都非常感谢。

编辑: 我感谢大家对此的意见。为了澄清,我试图仅从id与myNum匹配的对象返回数据。我希望能够访问该对象的所有数据,但只能访问该对象。我不知道该对象在数组中的位置。我简化了问题中的ID和数据,以帮助澄清问题。

再次感谢。

3 个答案:

答案 0 :(得分:6)

您可以从JSON访问x,如下所示:

var x1 = data.stuff[0].x; // the first object's x key
var x2 = data.stuff[1].x; // the second object's x key

因为您的JSON树看起来像这样:

{ // base object
    "stuff": [ // array
    { // 0.: object
        "id": 1,  // key => value
        "x" : 3,  // key => value
        "y" : 6,  // key => value
        "z" : -6  // key => value
    },
    { // 1.: object
        "id": 2,  // key => value
        "x" : 2,  // key => value
        "y" : 7,  // key => value
        "z" : -3  // key => value
    }]
}

因此,对于data.stuff[0].x,您选择stuff对象,然后选择first元素,然后选择其x键。

但是如果您想要处理所有x密钥,那么您需要通过简单的stuff循环或$.each方法遍历for数组


  

更新

至于你的问题。如果您想获取ID为myNum的对象,则您有 2种可能性

  1. 如果您拥有jsonscript.php,则只能使用服务器中的正确ID发送数据,因为您通过{ id: +myNum }将{id}传递给var object; $.each(data.stuff, function(i, obj) { if (obj.id === myNum) object = obj; }); // now object is the one with the right id ,这是{{3}的第二个参数}}

  2. 循环遍历数据,直到找到具有正确ID的对象

    {{1}}

答案 1 :(得分:1)

这是stuff下的数组,所以你需要这样的东西:

function getEffectsData(myNum){
    $.getJSON("jsonscript.php", { id: +myNum },function(data){
       $.each(data.stuff, function(i, obj) {
         var x = obj.x;
         //DO SOME STUFF
       });
    });
}

如果您在第一个x之后可以data.stuff[0].x,但我认为您想要在此处循环播放。

答案 2 :(得分:0)

应该是

var x = data[0].x;

var x = data[1]['x'];
例如