как манипулировать ответом Json как объектом? - PullRequest
3 голосов
/ 16 марта 2010

my jQuery.ajax возвращает объект JSon. Я сначала прочитал другие статьи. но их текст ответа не любит мой. Содержание моего ответа : из ответа firebug

{"item":"[{\"country\":\"USA\",\"lan\":\"EN\"},{\"country\":\"Turkiye\",\"lan\":\"TR\"}]"}

Теперь я пытаюсь предупредить страну:

* +1007 *

но это предупреждение "undefined"

Ответы [ 3 ]

9 голосов
/ 16 марта 2010

Значением элемента является строка. Таким образом, сначала вам нужно разобрать его как JSON. Попробуйте это.

$("#jsonResponse").html(msg);
    var item = jQuery.parseJSON(msg.item)
    $.each(item, function(i, d) {
        alert(this.country);
        debugger;
    });
},
7 голосов
/ 16 марта 2010
{"item":"[{\"country\":\"USA\",\"lan\":\"EN\"},{\"country\":\"Turkiye\",\"lan\":\"TR\"}]"}
        ^
        |
        +---- It's a string, not an array !

Ваш JSON должен выглядеть как

{"item":[ {"country":"USA","lan":"EN"},{"country":"Turkiye","lan":"TR"}]}

Тогда вы можете получить к нему доступ, как

country = msg.item[0];
lang    = country.lan;

for (i=0; i< item.length; i++) { alert ( item[i].country); }

и т.д ...

2 голосов
/ 16 марта 2010

Причина в том, что msg.item является строкой.

Причина, по которой это строка, заключается в том, что после item: стоит первая двойная кавычка Это также объясняет, почему ваши двойные кавычки экранированы. У вас есть:

{"item":"[{\"country\":\"USA\",\"lan\":\"EN\"},{\"country\":\"Turkiye\",\"lan\":\"TR\"}]"}

Когда вы должны иметь:

{"item":[{"country":"USA","lan":"EN"},{"country":"Turkiye","lan":"TR"}]"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...