gpt4 book ai didi

angularjs - 如何自定义设置angularjs jsonp回调名称?

转载 作者:行者123 更新时间:2023-12-04 03:43:44 25 4
gpt4 key购买 nike

我必须通过angularjs从某些网站获取json数据。我已经按照下面的链接正确地完成了所有操作。

我的问题是api不允许回调参数具有除字母,数字和_之外的任何字符。而且由于angular用'angular.callbacks._0'之类的东西替换了JSON_CALLBACK,所以不允许使用它。

如何自定义为angularjs设置此值?

parsing JSONP $http.jsonp() response in angular.js

谢谢

最佳答案

回调名称在此处是硬编码的httpBackend.js#L55,因此您无法对其进行配置。

但是,您可以编写一个HTTP拦截器来解决此问题,如下所示:

.factory('jsonpInterceptor', function($timeout, $window, $q) {
return {
'request': function(config) {
if (config.method === 'JSONP') {
var callbackId = angular.callbacks.counter.toString(36);
config.callbackName = 'angular_callbacks_' + callbackId;
config.url = config.url.replace('JSON_CALLBACK', config.callbackName);

$timeout(function() {
$window[config.callbackName] = angular.callbacks['_' + callbackId];
}, 0, false);
}

return config;
},

'response': function(response) {
var config = response.config;
if (config.method === 'JSONP') {
delete $window[config.callbackName]; // cleanup
}

return response;
},

'responseError': function(rejection) {
var config = rejection.config;
if (config.method === 'JSONP') {
delete $window[config.callbackName]; // cleanup
}

return $q.reject(rejection);
}
};
})

示例柱塞: http://plnkr.co/edit/S5K46izpIxHat3gLqvu7?p=preview

希望这可以帮助。

关于angularjs - 如何自定义设置angularjs jsonp回调名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25400891/

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