Получить данные JSON после их сохранения в переменной

1

После возвращения JSON из вызова ajax данные "ответ" сохраняются в переменной "theObj"; однако, когда я пытаюсь записать "theObj" на консоль, это приводит к нескольким "[Object object]", даже с JSON.stringify().

Если я делаю "theObj [0]" (response.results [0] отлично работает), я получаю "[", для первого символа в "[Объект объекта]".

В: Как я могу сохранить JSON в переменной и получить данные обратно после?

$.ajax(settings).done(function(response) {

            for (var i = 0; i < 19; i++) {
                //creating JSONenter[enter image description here][1]
                   theObj += response.results[i];
                    if (i == 18) {
                        //console.log(theObj.id)
                        console.log(JSON.stringify(theObj[0].id))
                     }
                 }
       }
Теги:

3 ответа

2
Лучший ответ

Я думаю, что ошибка в строке

theObj += response.results[i];

Поэтому попробуйте это вместо этого

function (response) {
    var list = response.results;
    // if there is no reason for having 19, replace this with var end = list.length
    var end = Math.min(list.length, 19); 
    for(var index = 0; index < end; index++) {
        theObj.push(list[index]);
    }
    console.log(theObj);
}

Мы не видим инициализацию переменной theObj

  • Если это массив, вы должны использовать функцию push для добавления в нее элементов

  • Если это общий объект, используйте theObj[id] = list[index];

  • DISCOURAGED Если это строка, вы должны использовать параметр theObj += JSON.stringify(response.results[i];) + ", "; , затем убедитесь, что вы добавили } или ] в конец, если это object или array соответственно (и что он также имеет { или [ в начале], а затем использует JSON.parse(theObj) чтобы преобразовать его обратно в object

Пожалуйста, дайте мне знать, что из

  • 0
    Я работаю! Это имеет так много смысла. Кроме того, я попробовал обескураженный метод, который вы упомянули здесь до создания поста, но забыл добавить скобки, так что это тоже не помогло. Наконец, 19 - это просто количество столбцов, к которым я хотел добавить позже.
  • 0
    @kennsorr, тогда лучше использовать Math.min(list.length, 19) если в списке меньше элементов
Показать ещё 1 комментарий
0

попробуй это

$.ajax(settings).done(function(response) {

         $.each( response, function( key, val ) {
             console.log(val.id)
         });
}
0

Я предположил, что вы хотите получить данные как объект, а не строку. Для этого вам нужно использовать var object = JSON.parse(yourJSONString). Этот метод возвращает объект, основанный на вашей строке JSON.

Пример:

Результат JSON:

{
  "name":"John Doe"
}

Код Javascript:

var john = JSON.parse(result);
console.log(john.name); //prints John Doe
  • 0
    Кажется, это уже объект, как и ожидалось

Ещё вопросы

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