jsonp với jquery [đã đóng]


89

Bạn có thể đưa ra một ví dụ rất đơn giản về việc đọc một yêu cầu jsonp với jquery không? Tôi chỉ không thể làm cho nó hoạt động.

Câu trả lời:


144

Đây là ví dụ làm việc:

<html><head><title>Twitter 2.0</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head><body>
<div id='tweet-list'></div>
<script type="text/javascript">
$(document).ready(function() {
    var url =  "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json";
    $.getJSON(url + "?callback=?", null, function(tweets) {
        for(i in tweets) {
            tweet = tweets[i];
            $("#tweet-list").append(tweet.text + "<hr />");
        }
    });
});
</script>
</body></html>

Lưu ý ?callback=?ở cuối URL được yêu cầu. Điều đó cho biết getJSONhàm mà chúng tôi muốn sử dụng JSONP. Xóa nó và một yêu cầu JSON vani sẽ được sử dụng. Mà sẽ không thành công do chính sách xuất xứ giống nhau .

Bạn có thể tìm thêm thông tin và ví dụ trên trang web JQuery: http://api.jquery.com/jQuery.getJSON/


2
Tôi đang thử $ .ajax với các thông số jsonp đó và không thể làm cho điều đó hoạt động. Dù sao, điều này hoạt động tốt, cảm ơn.
akula1001

2
Liệu nó có ?callback=?thực sự được gửi như một phần của URL hay nó chỉ là một loại cờ mà jQuery nhìn thấy và loại bỏ trước khi tìm nạp URL?
hippietrail

1
Điều gì là cần thiết nếu URL của bạn yêu cầu tham số? (ví dụ ?p=1&s=50:)
ONDEV

2
Tôi thấy đây là một tài liệu tham khảo tốt như một điểm khởi đầu. Để trả lời ở trên: Có, lệnh gọi lại được gửi dưới dạng tham số và sẽ được gửi lại dưới dạng một hàm được bao bọc xung quanh phản hồi JSON. Xem stackoverflow.com/questions/7936610/… . Để gửi các tham số bổ sung, chúng được gửi trong tham số thứ hai của getJSON (), trong ví dụ trên. thay thế null bằng {p: 1, s: 50}
Ecropolis

Tôi nhận được mã lỗi 410 - đã biến mất. Có dịch vụ hiện tại "vĩnh cửu" trả lại JSON ở bất kỳ đâu không? Để người ta có thể kiểm tra xem phương pháp riêng có hoạt động không?
Konrad Viltersten
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.