CẬP NHẬT: kể từ Angular 1.6
Bạn không còn có thể sử dụng chuỗi JSON_CALLBACK làm trình giữ chỗ để chỉ định nơi giá trị tham số gọi lại sẽ đi
Bây giờ bạn phải xác định lệnh gọi lại như sau:
$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
Thay đổi / truy cập / khai báo thông số qua $http.defaults.jsonpCallbackParam
, mặc định làcallback
Lưu ý: Bạn cũng phải đảm bảo rằng URL của mình được thêm vào danh sách trắng / tin cậy:
$sceDelegateProvider.resourceUrlWhitelist
hoặc được tin cậy rõ ràng qua:
$sce.trustAsResourceUrl(url)
success/error
không được dùng nữa .
Các $http
phương thức hứa hẹn kế thừa success
và error
đã không được dùng nữa và sẽ bị xóa trong v1.6.0. Sử dụng phương pháp then chuẩn thay thế. Nếu $httpProvider.useLegacyPromiseExtensions
được đặt thành false
thì các phương thức này sẽ ném $http/legacy error
.
SỬ DỤNG:
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);
});
Câu trả lời trước: Angular 1.5.x và trước đó
Tất cả những gì bạn nên làm là thay đổi callback=jsonp_callback
thành callback=JSON_CALLBACK
thích như vậy:
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
Và sau đó .success
hàm của bạn sẽ kích hoạt như bạn có nếu trả về thành công.
Làm theo cách này giúp bạn không phải làm bẩn không gian toàn cầu. Điều này được ghi lại trong tài liệu AngularJS ở đây .
Cập nhật Fiddle của Matt Ball để sử dụng phương pháp này: http://jsfiddle.net/subhaze/a4Rc2/114/
Ví dụ đầy đủ:
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);
});