我必须通过angularjs从某些网站获取json数据。我已经按照下面的链接正确地完成了所有操作。
我的问题是api不允许回调参数具有除字母,数字和_之外的任何字符。而且由于angular用’angular.callbacks._0’之类的东西替换了JSON_CALLBACK,所以不允许使用它。
如何自定义为angularjs设置此值?
谢谢
回调名称在此处为硬编码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
希望这可以帮助。