gpt4 book ai didi

javascript - 带有 jsonp 的 Angular $resource 不工作

转载 作者:行者123 更新时间:2023-11-29 18:25:53 25 4
gpt4 key购买 nike

我在使用以下代码时遇到问题:

angular.module('offerServices', ['ngResource'])
.factory('Offer', function ($resource) {

return $resource('url/offers', { callback: 'JSON_CALLBACK' },
{
query: { method: 'JSONP' }
}
);

})
.factory('Trustyou', function ($resource) {
return $resource('https://api.trustyou.com/hotels/:id/seal.json', {},
{
query: { method: 'JSONP' }
}
);
});

调用 Offer.query({}, function(){});在我的 Controller 中工作没有任何问题。但这部分不起作用:

       var trustYouData = Trustyou.query({ id: 'd8421e79-99f0-41b2-8d6e-9cfd62a9776b' }, function (data) {
console.log(data);
});

这总是返回 400 错误:

“网络错误:400 错误请求 - https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?callback=angular.callbacks._1

当我更改我的代码并使用 jQuerys.getJSON 时,我没有遇到任何问题:

 $.getJSON("https://api.trustyou.com/hotels/d8421e79-99f0-41b2-8d6e-9cfd62a9776b/seal.json?callback=?", function (data) {
console.log(data);
});

在这种情况下,为什么 jQuery 方法有效但 angulars $resource 实现返回错误?

最佳答案

angular 的回调函数有一些问题,我在git 中打开了一个问题

https://github.com/angular/angular.js/issues/1551

回调名称必须是“JSONP_CALLBACK”,angular会将回调名称变成callback=angular.callbacks._1

有些网络服务不能接受“angular.callbacks._1”回调名称。

解决方案:

var stock_hack

function stock_search(data) {
stock_hack = data;
}


var stock_hack

function stock_search(data) {
stock_hack = data;
}


function jsonp_example($scope, $http) {

$scope.doRequest = function() {
$http({
method: "JSONP",
params: {
input: "GM",
callback: "stock_search"
},
url: "http://dev.markitondemand.com/Api/Lookup/jsonp",
isArray: true
}).success(function(data, status) {
/*
*Never Goes HERE !!
*/


}).error(function(data, status) {

/*
* FREAKING HACK !!!!
*/
console.info("goes here")
console.info(stock_hack)

});
};


}​

我的 fiddle http://jsfiddle.net/pMGgR/

关键是你必须调用另一个 javascript 函数来获得你的 json 响应。

希望对你有帮助

关于javascript - 带有 jsonp 的 Angular $resource 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13267285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com