^ Как проанализировать несколько массивов JSON, полученных с сервера?

0

Вот мои данные Json, полученные от Server:

[
     {"Name":"A"}, 
     {"Name":"B"},
     {"Name":"C"},
     {"Name":null}
]
[
     {"Name":null},
     {"Name":"D"},
     {"Name":null}
]
[ 
     {...},
     {...}
]

Как его проанализировать, используя JQUERY в атрибуте успеха AJAX?

Вот мой код Ajax:

$.ajax({    
    url: '#.php',
    type: 'post',
    async: false,
    data: {},
    dataType: 'json',
    success: function(data){
        var str = JSON.stringify(data);
        var obj = JSON.parse(str);

        for(var i=0; i< data.length;i++)
        {
            alert(data[i].Name);
        }
    },
    complete: function(xhr,status){
        alert(status);
    },
    error: function(xhr){
        alert("An error occured: " + xhr.status + " " + xhr.statusText );
        alert("An error occured. Please Try Again");
    }
})

Этот код не работает и дает полную парсерную ошибку. Я хочу отобразить все полученные имена. Пожалуйста помоги.

  • 1
    оповещение (данные [I] .name); это правильно или должно быть настороже (obj [i] .Name)?
  • 1
    Это потому что твой JSON недействителен. Вам необходимо отправить действительный формат JSON. Кроме того, для sidenote нет никакого смысла в строковом преобразовании и последующем анализе данных, потому что это уже проанализированный json.
Показать ещё 12 комментариев

2 ответа

2

ваши данные, полученные с сервера, недействительны JSON, если бы это было так, это было бы примерно так:

[
    [{
        "Name": "A"
    }, {
        "Name": "B"
    }, {
        "Name": "C"
    }, {
        "Name": null
    }],
    [{
        "Name": null
    }, {
        "Name": "D"
    }, {
        "Name": null
    }]
]

это было бы еще проще разобрать:

[{
    "Name": "A"
}, {
    "Name": "B"
}, {
    "Name": "C"
}, {
    "Name": null
}, {
    "Name": null
}, {
    "Name": "D"
}, {
    "Name": null
}]
1

Данные, возвращаемые вашим сервером, не соответствуют синтаксису JSON. Чтобы иметь надлежащую структуру JSON, должен быть только один родительский объект, а не несколько массивов.

Если вы можете изменить выход сервера, рассмотрите следующие варианты:

Создание родительского массива:

[ your_arrays ]

затем доступ к data[0] для извлечения ваших массивов в вашей функции success.

Создание родительского объекта:

{myArrays : your_arrays}

затем доступ к data.myArrays в вашей функции success.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню