Как я могу получить доступ к определенному объекту json, используя jquery и json? - PullRequest
0 голосов
/ 08 июля 2010

У меня проблема с попыткой вернуть конкретную запись, используя jQuery и JSON. Я передаю переменную в функцию и хочу вывести только те данные, которые соответствуют идентификатору, который я установил при выполнении функции.

Прямо сейчас моя функция выглядит так:

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 }]}

Единственное, что я знаю, это то, что в функцию передается правильная переменная. После этого ничего не происходит. Очень новичок в этом, поэтому любая помощь очень ценится.

EDIT: Я ценю вклад каждого в этом. Чтобы уточнить, я пытаюсь вернуть данные только из объекта, идентификатор которого соответствует myNum. Я хочу иметь доступ ко всем данным из этого объекта, но только к этому объекту. Я понятия не имею, где этот объект будет в массиве. Я упростил идентификаторы и данные в моем вопросе, чтобы помочь прояснить проблему.

Еще раз спасибо.

Ответы [ 3 ]

6 голосов
/ 08 июля 2010

Вы можете получить доступ к x из своего JSON следующим образом:

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 простым циклом for или методом $.each.


UPDATE

Что касается вашего вопроса. Если вы хотите получить объект с идентификатором myNum, у вас есть 2 возможностей :

  1. если у вас есть jsonscript.php, вы можете отправлять данные только с правильным идентификатором с сервера, потому что вы передаете ему идентификатор с помощью { id: +myNum }, который является вторым параметром getJSON

  2. Вы просматриваете данные, пока не найдете объект с правильным идентификатором

    var object; 
    $.each(data.stuff, function(i, obj) {
      if (obj.id === myNum) object = obj;
    });
    // now object is the one with the right id
    
1 голос
/ 08 июля 2010

Это массив под 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, но я думаю, что выЯ хотел бы пройтись здесь.

0 голосов
/ 08 июля 2010

должно быть

var x = data[0].x;

или

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

, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...