2012-06-12 28 views
8

Khi người dùng nhấp vào nút, tôi muốn trả về một số dữ liệu và lặp lại qua JSON để tôi có thể nối thêm kết quả vào hàng trong bảng.

Tại thời điểm này tôi chỉ đang cố gắng làm cho vòng lặp của mình hoạt động, đây là mã của tôi.

JSON của tôi sẽ trở lại như sau: { "Cột": [ "username", "password"], "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); 
     } 
    }); 

}); 

Tôi nhận được một lỗi jQuery (dòng 16, một không được xác định). Tôi đang làm gì sai?

+0

như thế nào json của bạn trông như thế nào? – Shyju

+0

Có gì 'a' và dòng 16 ở đâu? – Blender

+0

{"COLUMNS": ["username", "password"], "DATA": [["foo", "bar"]]} –

Trả lời

11

Giả sử JSON của bạn là như thế này

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

Bạn có thể truy vấn nó như thế này

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

mẫu: http://jsfiddle.net/4HxSr/9/

EDIT: Theo OP JSON văn sau

JSON của bạn không có mặt hàng nào, vì vậy nó không hợp lệ.

Theo JSON của bạn như thế này

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

Bạn nên truy vấn nó như mẫu Làm việc

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

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

này: http://jsfiddle.net/4HxSr/19/

+0

cảm ơn, có vẻ như tôi đã khá xa trong sự hiểu biết của tôi nhưng điều này sẽ giúp. Tôi đã cố gắng tham khảo mục [1] mà không cần chuyển chỉ mục vào cuộc gọi lại. –

+0

@ JasonWells: Bạn được chào đón :) Vui vì tôi có thể giúp đỡ. – Shyju

3

Bạn cần phải thêm:

dataType: 'json', 

.. vì vậy bạn cần có:

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

}); 

.. cũng như đảm bảo rằng bạn đang tham chiếu COLUMNS trong mỗi câu lệnh.

getJSON cũng là một cách khác để làm việc đó ..

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

+0

Cảm ơn, đã không nhận ra tôi cần datatype: json nếu tôi đã trở về json –

+0

Bạn không nếu bạn đang sử dụng $ .getJSON - đó là một wrapper cho $ .ajax ({dataType: 'json'}); – Sp4cecat

Các vấn đề liên quan