Я не уверен, правильно ли отформатирован мой JSON для доступа к нему - PullRequest
4 голосов
/ 12 мая 2011

Вот еще один JSON вопрос (я всегда борюсь с массивами).

Мой код PHP возвращает следующую структуру JSON :

[{"breed":{"msg":"Breed is required","placement":"#breed_error_1","return":"false"}},{"breed":{"msg":"Breed does not exist","placement":"#breed_error_2","return":"true"}}] 

Мой код PHP:

$breed[]["breed"] = array("msg"=>"Breed is required","placement"=>"#breed_error_1", "return"=>"false");
$breed[]["breed"] = array("msg"=>"Breed does not exist","placement"=>"#breed_error_2", "return"=>"true");  

И код AJAX:

$.ajax({
    type: 'POST',
    cache: false,
    url: "validate_breed",
    data: element+"="+$(elementSelector).val()+"&v="+validateElement,
    context: document.body,
    dataType: 'html',
    success: function(data){
        alert(data);

    }
});

alert(data) предупреждает структуру JSON для целей отладки.

Как получить доступ к разделу породы объекта JSON и всехследующего индекса / ключа?

Ответы [ 6 ]

2 голосов
/ 12 мая 2011
Цикл

A for(item in data) должен помочь, есть и другие статьи, в которых говорится о получении значений

на самом деле Как мне пройти через цикл или перечислить объект JavaScript?

1 голос
/ 12 мая 2011

Вот демоверсия JSFiddle:

Например, если это ваш выходной объект JSON, вы можете получить доступ к индексу каждого вида, используя цикл for:

var myJSON = [{
    "breed": {
        "msg": "Breed is required",
        "placement": "#breed_error_1",
        "return": "false"
    }},
{
    "breed": {
        "msg": "Breed does not exist",
        "placement": "#breed_error_2",
        "return": "true"
    }}];

for(var i=0;i<myJSON.length; i++){
     console.log(myJSON[i].breed);
}

Это выведет на консоль два объекта под каждым из двух типов

1 голос
/ 12 мая 2011

Самый простой способ убедиться в правильности json - это создать массив в php tw так, как вы этого хотите, и затем использовать http://php.net/manual/en/function.json-encode.php в массиве, чтобы отправить его обратно

1 голос
/ 12 мая 2011

Вот формат JSON:

[
   {
      "breed":{
         "msg":"Breed is required",
         "placement":"#breed_error_1",
         "return":"false"
      }
   },
   {
      "breed":{
         "msg":"Breed does not exist",
         "placement":"#breed_error_2",
         "return":"true"
      }
   }
]

У вас есть массив [] из двух объектов {}.

Для начала вы должны сделать for (var i = 0; i < JSON.length; i++) цикл, чтобы получить каждый объект (из которых у вас есть 2).

Фрагмент:

for (var i = 0, len = JSON.length; i < len; i++){
    thisBreed = JSON[i].breed; //now this == {"msg" : etc etc}
    for (prop in thisBreed) {
        console.log(thisBreed.msg + thisBreed.placement + thisBreed.return);
    }
}
1 голос
/ 12 мая 2011

Используйте console.info в FireFox, и вы сможете визуализировать объект.

0 голосов
/ 31 марта 2012

Попробуйте это

for (var i = 0, len = JSON.length; i < len; i++){
  console.log(JSON[i].breed.msg +" - "+ JSON[i].breed.placement +" - "+ JSON[i].breed.return);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...