【发布时间】:2014-08-12 02:06:34
【问题描述】:
我第一次使用 http 请求。我为此使用 Angular。服务器正常工作 - 它是公共新闻 API。我需要通过 URL 获取 JSON 文件,例如“hostname.com/article/2014/06/10/123?api-key=1234567890”。
function Ctrl($scope, $http, $templateCache) {
//some code there
$scope.load_article = function( patch ) {
$http.get(patch + "?" + $scope.apikey)
.success(function(response){
result = angular.fromJson(response.data);
$scope.article = result;
}).error(function(response) {
$scope.article = "error "+ response.status;
});
};
}
但是当我调用 load_article() 时,跟踪器会显示结果:
Method: OPTIONS;
Status: 596 OK;
Type: text/xml;
并将“错误未定义”写入 $scope.article。
我的错在哪里?
更新:
$http.jsonp(patch + "?" + $scope.apikey).success(function(data)){...}
获取JSON文件会更好。
【问题讨论】:
-
Http 596错误码通常表示你点击的api端点不存在。您确定您使用的是正确的 api 调用吗?
-
@zszep 当我将带有 api-key 的补丁直接复制到浏览器时,它会显示正确的 json 文件。
-
好的,那么可能是跨域问题。如果它通过 http 而不是 XmlHttpRequest 工作,您可以尝试 JSONP 来获取数据。所有现代浏览器都限制通过 javascript 进行跨域调用。
-
@zszep 如果我在 "$http.jsonp(patch + "?" + $scope.apikey) 上更改 "$http.get(patch + "?" + $scope.apikey)" ",调用load_article()后没有statmen...没有成功,没有错误。看起来该函数被忽略了。
-
JSONP 通常要求您在请求中发送回调函数(您应该查找 api 的文档)。如果您告诉我们您使用的是什么公共新闻 API,有人可能会提供帮助。
标签: javascript json angularjs http frontend