【发布时间】:2018-09-11 02:20:51
【问题描述】:
我正在尝试从外部 API 获取详细信息,但无法获取 JSON 响应。
这是我的服务代码:
angular.module('app').factory('appService', appService);
appService.$inject = ['$http','$sce'];
function appService($http, $sce) {
return {
getData: getData
};
function getData() {
//Rest Headers
var URL = "https://www.westelm.com/services/catalog/v4/category/shop/new/all-new/index.json?callback=JSON_CALLBACK";
var requestHeaders = {
'Content-Type': 'application/json',
'Accept': 'application/json'
};
var trustedUrl = $sce.trustAsResourceUrl(URL);
return $http.jsonp(trustedUrl, {jsonpCallbackParam: 'callback'})
.then(function successCallback(response) {
console.log("succes");
return response.data;
}, function errorCallback(response) {
console.log("error");
console.log(response);
return response.data;
}
);
}
}
我收到以下错误消息:
但 API 运行良好。我怎样才能点击这个 API 来获取数据?
根据给定答案更新代码:
angular.module('app').factory('appService', appService);
appService.$inject = ['$http','$sce'];
function appService($http, $sce) {
//Binding
return {
getData: getData
};
function jsonp_callback(data) {
console.log("callback");
console.log(data);
return true;
}
function getData() {
//Rest Headers
var URL = "https://www.westelm.com/services/catalog/v4/category/shop/new/all-new/index.json";
var requestHeaders = {
'Content-Type': 'application/json',
'Accept': 'application/json'
};
$sce.trustAsResourceUrl(URL);
return $http.jsonp(URL, {
jsonpCallbackParam: 'jsonp_callback'
})
.then(function(response) {
console.log("succes");
console.log(response);
});
}
}
现在我收到错误:
错误:[$sce:insecurl] http://errors.angularjs.org/1.6.9/$sce/insecurl?p0=https%3A%2F%2Fwww.westelm.com%2Fservices%2Fcatalog%2Fv4%2Fcategory%2Fshop%2Fnew%2Fall-new%2Findex.json
【问题讨论】:
-
如果 API 未启用 CORS 或未提供 JSONP,您必须在您的服务器或第三方服务上使用代理。这两种情况似乎都不成立
-
请不要尝试从答案中更新问题,然后将问题更改为新问题;如果答案解决了您的原始错误,请将答案标记为已接受,如果您现在收到新错误,请使用新错误创建一个新问题,并引用此问题有必要的。要求不断变化的问题使新读者很难弄清楚发生了什么,也很难确定哪些答案真正适用于问题的哪一部分。
标签: angularjs angularjs-http angular1.6