jsonp กับ jquery [ปิด]


89

คุณสามารถยกตัวอย่างง่ายๆในการอ่านคำขอ jsonp ด้วย jquery ได้หรือไม่? ฉันไม่สามารถทำให้มันทำงานได้

คำตอบ:


144

นี่คือตัวอย่างการทำงาน:

<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>

สังเกต?callback=?ท้าย URL ที่ร้องขอ นั่นบ่งบอกถึงgetJSONฟังก์ชันที่เราต้องการใช้ JSONP ลบออกและจะใช้คำขอวานิลลา JSON ซึ่งจะล้มเหลวเนื่องจากการนโยบายกำเนิดเดียวกัน

คุณสามารถค้นหาข้อมูลและตัวอย่างเพิ่มเติมได้ที่เว็บไซต์ JQuery: http://api.jquery.com/jQuery.getJSON/


2
ฉันพยายาม $ .ajax กับพารามิเตอร์ jsonp เหล่านั้นและไม่สามารถใช้งานได้ อย่างไรก็ตามมันใช้งานได้ดีขอบคุณ
akula1001

2
สิ่ง?callback=?นี้ถูกส่งเป็นส่วนหนึ่งของ URL จริง ๆ หรือเป็นเพียงการตั้งค่าสถานะที่ jQuery เห็นและปิดลงก่อนที่จะดึง URL?
hippietrail

1
สิ่งที่จำเป็นหาก URL ของคุณต้องการพารามิเตอร์ (เช่น: ?p=1&s=50)
ONDEV

2
ฉันพบว่านี่เป็นข้อมูลอ้างอิงที่ดีเป็นจุดเริ่มต้น หากต้องการตอบข้างต้น: ใช่การโทรกลับจะถูกส่งเป็นพารามิเตอร์และควรส่งกลับเป็นฟังก์ชันที่ล้อมรอบการตอบสนอง JSON ดูstackoverflow.com/questions/7936610/... ในการส่งพารามิเตอร์เพิ่มเติมจะถูกส่งไปในพารามิเตอร์ที่สองของ getJSON () ในตัวอย่างข้างต้น แทนที่ null ด้วย {p: 1, s: 50}
Ecropolis

ฉันได้รับรหัสข้อผิดพลาด 410 - หายไป มีบริการปัจจุบัน "ชั่วนิรันดร์" ที่ส่งคืน JSON ทุกที่หรือไม่ เพียงเพื่อทดสอบว่าวิธีการของตัวเองได้ผลหรือไม่?
Konrad Viltersten
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.