2012-06-01 43 views
15

Tôi tải xuống tự động tải xuống giao diện người dùng Jquery, tìm đến remote-jsonp.html. Đây là chức năng ajax nhưng tôi mở giao diện điều khiển .. Tôi không thể nhìn thấy bất kỳ yêu cầu trong giao diện điều khiển của tôi ...Sự khác biệt giữa dataType jsonp và JSON

chênh lệch giữa datatype là gì; "jsonp" và datatype; "JSON"

$("#city").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "http://ws.geonames.org/searchJSON", 
       dataType: "jsonp", 
       data: { 
        featureClass: "P", 
        style: "full", 
        maxRows: 12, 
        name_startsWith: request.term 
       }, 
       success: function(data) { 
        response($.map(data.geonames, function(item) { 
         return { 
          label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName, 
          value: item.name 
         } 
        })); 
       } 
      }); 
     }, 

Tham chiếuhttp://jqueryui.com/demos/autocomplete/remote-jsonp.html

Trả lời

26

dataType: jsonp cho yêu cầu tên miền chéo, có nghĩa là yêu cầu tên miền khác và dataType: json cho cùng một yêu cầu xuất xứ cùng miền.

Tải trong khối JSON bằng JSONP. Thêm một "? Callback =?" đến cuối URL của bạn để chỉ định cuộc gọi lại. Tắt bộ nhớ đệm bằng cách thêm thông số chuỗi truy vấn, "_ = [TIMESTAMP]", vào URL trừ khi tùy chọn bộ nhớ cache được đặt thành true.

Đọc về same origin policy

Đọc về nhiều jQuery AJAX

+0

'cross-browser' hoặc' cross-domain'? : s –

+1

@Joy Chắc chắn là tên miền chéo. –

+0

@Joy cảm ơn cả hai – thecodeparadox

7

Với JSONP bạn không nên nhìn thấy một yêu cầu ajax nếu đó là những gì bạn đang tìm kiếm. Tuy nhiên, bạn sẽ thấy yêu cầu về tài nguyên vì JSONP được sử dụng cho các cuộc gọi tên miền chéo để lấy dữ liệu từ các miền khác nhau.

Nó trả về dữ liệu JSON của bạn được bao bọc trong tên hàm. jQuery xử lý tên hàm đằng sau hậu trường và chuyển dữ liệu vào trình xử lý thành công của bạn. Dữ liệu được tải bằng cách tự động tạo một phần tử script với thuộc tính src trỏ đến dịch vụ đang được gọi và sau đó được gắn vào DOM của trình duyệt. Sau đó, trình duyệt đưa ra yêu cầu đối với tài nguyên và dịch vụ web phản hồi bằng chức năng gọi lại và dữ liệu.

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