2012-06-12 12 views
8

Gdy użytkownik kliknie przycisk, chcę zwrócić niektóre dane i powtórzyć proces przez JSON, aby móc dołączyć wyniki do wiersza tabeli.

W tym momencie próbuję uruchomić pętlę, oto mój kod.

Moje JSON wraca następująco: { "kolumny": [ "login", "hasło"], "DATA": [[ "foo", "bar"]]}

$("#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); 
     } 
    }); 

}); 

Otrzymuję błąd jQuery (linia 16, a nie jest zdefiniowany). Co ja robię źle?

+0

w jaki sposób Twój json wygląda? – Shyju

+0

Co to jest 'a' i gdzie jest linia 16? – Blender

+0

{"KOLUMNY": ["nazwa użytkownika", "hasło"], "DATA": [["foo", "bar"]]} –

Odpowiedz

11

Zakładając, że JSON jest tak

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

Można zapytać go jak ten

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

próbki: http://jsfiddle.net/4HxSr/9/

EDIT: Jak na OP JSON Użyto później

Twój JSON nie ma elementów, więc jest nieważny.

jak na swoje JSON jak ten

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

Należy zapytać go jak ten

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

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

próbka robocza: http://jsfiddle.net/4HxSr/19/

+0

dziękuję, wygląda na to, że byłem dość daleko w moim rozumieniu, ale to pomaga. Próbowałem odwołać się do pozycji [1] bez przekazywania indeksu do wywołania zwrotnego. –

+0

@JasonWells: Serdecznie zapraszamy :) Cieszę się, że mogłem pomóc. – Shyju

3

Trzeba dodać:

dataType: 'json', 

.. więc trzeba mieć:

$("#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); 
    } 
}); 

}); 

.. a także zapewnienie, że jesteś przedstawieniu kolumn w każdej instrukcji.

getJSON jest także inny sposób to zrobić ..

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

+0

Dzięki, nie zdawałem sobie sprawy, że potrzebuję typu danych: json, jeśli już zwróciłem json –

+0

Nie, jeśli używasz $ .getJSON - jest to opakowanie dla $ .ajax ({dataType: 'json'}); – Sp4cecat