Вопрос по ajax, javascript, jquery – Итерация по JSON с успехом $ .ajax

9

Когда пользователь нажимает кнопку, я хочу вернуть некоторые данные и выполнить итерацию по JSON, чтобы я мог добавить результаты в строку таблицы.

На данный момент я просто пытаюсь заставить мой цикл работать, вот мой код.

Мой JSON возвращается следующим образом: {"COLUMNS": ["quot; имя пользователя", "пароль"], "DATA": [[& quot; foo & quot ;, & quot; bar & quot;]]}

$("#button").click(function(){

    $.ajax({
        url: 'http://localhost/test.php',
        type: 'get',
        success: function(data) {  
         $.each(data.items, function(item) {
            console.log(item);
            });
        },
        error: function(e) {
            console.log(e.message);
        }
    });

});

Я получаю ошибку jQuery (строка 16, а не определена). Что я делаю неправильно?

Что & APOS; sa а где строка 16? Blender
{"COLUMNS": ["имя пользователя", "пароль"], "DATA": [[& quot; foo & quot ;, & quot; bar & quot;]]} Jason Wells
@JasonWells Вы должны публиковать это как часть вашего вопроса (отредактируйте свой вопрос), а не как комментарий. Paulpro
как выглядит ваш JSON? Shyju

Ваш Ответ

2   ответа
3

Вам нужно добавить:

dataType: 'json',

.. так что вы должны иметь:

$("#button").click(function(){

$.ajax({
    url: 'http://localhost/test.php',
    type: 'get',
    dataType: 'json',
    success: function(data) {  
     $.each(data.COLUMNS, function(item) {
        console.log(item);
        });
    },
    error: function(e) {
        console.log(e.message);
    }
});

});

.. а также гарантируя, что вы ссылаетесь на COLUMNS в каждом утверждении.

getJson - это еще один способ сделать это ..

http://api.jquery.com/jQuery.getJSON/

Спасибо, не понял, что мне нужен тип данных: json, если я уже возвращал json Jason Wells
Вы не используете, если используете $ .getJSON - это обертка для $ .ajax ({dataType: & j; & amp;});
11

Предполагая вашJSON это так

var item=  {
        "items": [
                  { "FirstName":"John" , "LastName":"Doe" },
                  { "FirstName":"Anna" , "LastName":"Smith" },
                  { "FirstName":"Peter" , "LastName":"Jones" }
                 ]
           }

Вы можете запросить это так

$.each(item.items, function(index,item) {        
    alert(item.FirstName+" "+item.LastName)
});

Образец :http://jsfiddle.net/4HxSr/9/

EDIT : As per the JSON OP Posted later

ВашJSON не имеет предметов, поэтому он недействителен.

Согласно вашему JSON, как это

var item= {  "COLUMNS": [  "username", "password" ],
             "DATA": [    [ "foo", "bar"  ] ,[ "foo2", "bar2"  ]]
          }

Вы должны запросить это так

console.debug(item.COLUMNS[0])
console.debug(item.COLUMNS[1])

 $.each(item.DATA, function(index,item) {        
    console.debug(item[0])
    console.debug(item[1])
  });

Рабочий образец:http://jsfiddle.net/4HxSr/19/

@JasonWells: Добро пожаловать :) Рад, что мог помочь.
спасибо, похоже, я был довольно далеко в моем понимании, но это помогает. Я пытался ссылаться на элемент [1], не передавая индекс в обратный вызов. Jason Wells

Похожие вопросы