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

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

现在,我的function看起来像这样:

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和数据,以帮助澄清问题。

再次感谢。

你可以从你的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键,那么你需要通过一个简单的for循环或$.each方法遍历stuff数组。


UPDATE

至于你的问题。 如果你想获得id为myNum的对象,你有两种可能

  1. 如果您拥有jsonscript.php您只能使用服务器中正确的id发送数据,因为您通过{ id: +myNum }将id传递给它,这是getJSON的第二个参数

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

     var object; $.each(data.stuff, function(i, obj) { if (obj.id === myNum) object = obj; }); // now object is the one with the right id 

它是一个数组下的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 ,但我想你想在这里循环。

应该

 var x = data[0].x; 

要么

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

例如。