อัปเดต: ตั้งแต่ Angular 1.6
คุณไม่สามารถใช้สตริง JSON_CALLBACK เป็นตัวยึดสำหรับระบุตำแหน่งที่ค่าพารามิเตอร์การเรียกกลับได้อีกต่อไป
ตอนนี้คุณต้องกำหนดการเรียกกลับดังนี้:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
เปลี่ยน / เข้าถึง / ประกาศพารามิเตอร์ผ่าน$http.defaults.jsonpCallbackParam
ค่าเริ่มต้นเป็นcallback
หมายเหตุ: คุณต้องตรวจสอบให้แน่ใจว่า URL ของคุณถูกเพิ่มในรายการที่เชื่อถือได้ / รายการที่อนุญาตพิเศษ:
$sceDelegateProvider.resourceUrlWhitelist
หรือเชื่อถือได้อย่างชัดเจนผ่านทาง:
$sce.trustAsResourceUrl(url)
success/error
ถูกเลิกใช้
$http
วิธีการดั้งเดิมสัญญาsuccess
และerror
ได้รับการเลิกใช้แล้วและจะถูกลบออกใน v1.6.0 ใช้วิธีมาตรฐานแล้วแทน หาก$httpProvider.useLegacyPromiseExtensions
มีการตั้งค่าแล้ววิธีการเหล่านี้จะโยนfalse
$http/legacy error
ใช้:
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts"
var trustedUrl = $sce.trustAsResourceUrl(url);
$http.jsonp(trustedUrl, {jsonpCallbackParam: 'callback'})
.then(function(data){
console.log(data.found);
});
คำตอบก่อนหน้า: Angular 1.5.x และก่อนหน้า
สิ่งที่คุณควรต้องทำคือเปลี่ยนcallback=jsonp_callback
เป็นcallback=JSON_CALLBACK
ชอบ:
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
จากนั้น.success
ฟังก์ชั่นของคุณควรเริ่มทำงานเหมือนที่คุณมีหากการส่งคืนสำเร็จ
การทำเช่นนี้จะช่วยให้คุณไม่ต้องทำให้พื้นที่ทั่วโลกสกปรก นี้ถูกบันทึกไว้ในเอกสาร AngularJS ที่นี่
อัปเดตซอของ Matt Ball เพื่อใช้วิธีนี้: http://jsfiddle.net/subhaze/a4Rc2/114/
ตัวอย่างเต็ม:
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
$http.jsonp(url)
.success(function(data){
console.log(data.found);
});