2009-02-05 40 views
6

Tôi đang làm việc tại một ứng dụng sẽ thực hiện yêu cầu ajax POST cho một tập lệnh PHP trên máy chủ của tôi. Kịch bản lệnh sẽ truy vấn cơ sở dữ liệu và trả về một hàng các bản ghi, như một mảng. (Một mảng cho mỗi hàng, chứa các phần tử như id, tiêu đề, v.v.). Sau đó tôi muốn sử dụng json_encode() để mã hóa mảng này và chuyển nó trở lại javascript sẽ sử dụng nó để hiển thị các bản ghi.Làm thế nào để sử dụng JSON với Jquery?

1) Làm thế nào tôi có thể trả về chuỗi được mã hóa JSON cho javascript? 2) Làm thế nào để javascript lặp qua các hàng và truy cập vào các trường của chúng?

Trả lời

11

Để nhận JSON bằng jQuery, chỉ cần sử dụng jQuery.getJSON(). Ngoài ra, bạn có thể sử dụng bất kỳ công cụ AJAX nào khác và sau đó chỉ cần eval() json để lấy đối tượng javascript.

Để lặp qua một mảng, tôi thường sử dụng jQuery.each():

var recordList = yourMethodToGetRecordListWithAjax(); 

jQuery.each(recordList, function() 
{ 
    alert(this.Name); // For example 
}); 
+0

có lỗi chính tả nhỏ trong câu trả lời của bạn, jquery.each sẽ là $ .each. Khác hơn là nó hoạt động tốt :) –

+0

Đây là mã của tôi: $ .getJSON ("getData.php", data, myFunctionToLoopThroughResults); –

+3

$ là một phím tắt cho jQuery - Tôi thích viết jQuery cho những thứ "tĩnh" như mỗi() và sử dụng $ cho những thứ "không tĩnh" như các truy vấn như tôi tin nó giúp tăng cường khả năng đọc. –

0

Bạn có thể trả về chuỗi JSON mã hóa để JS bởi lặp lại nó với một Content-Type của application/json.

Xem câu trả lời ở trên cho phần còn lại.

3

1) trong kịch bản php:

$return["foo"] = "bar"; 
$return["blah"] = "bleg"; 
print json_encode($return); 

2) trong javascript:

  $.ajax({ 
        type: "POST", 
        url: URL, 
        cache:false, 
        data: values, 
        dataType:'json', 
        success: function(json) 
        { 
        var foo = json.foo; 
        if (json.blah == "bleg") 
        { 
         // do stuff 
        } 

        } // end success function 
       });  // end ajax call 
Các vấn đề liên quan