角度简单的JSON请求
这可能会让我看起来像一个完全初学者,而当我谈到角度时,这是我的问题:
我试图做一个.JSON API的简单请求,但我只是不断得到错误状态码0。
var dataUrl = 'http://www.reddit.com/r/pics/comments/1ua1nb/.json?limit=2';
$http({method: 'GET', url: dataUrl}).
success(function(data, status, headers, config)
{
window.alert('success:' + status);
}).
error(function(data, status, headers, config) {
window.alert('error:' + status);
});
更新:
我通过浏览器检查了javascript控制台,并得到了这些错误消息:
event.returnValue已弃用。 请改用标准的event.preventDefault()。 无法加载资源:服务器响应的状态为501(未实施)http://www.reddit.com/r/pics/comments/1ua1nb/.json?limit=2加载资源失败:无'Access- Control-Allow-Origin'标题出现在请求的资源上。 Origin ...因此不被允许访问。 http://www.reddit.com/r/pics/comments/1ua1nb/.json?limit=2 XMLHttpRequest无法加载http://www.reddit.com/r/pics/comments/1ua1nb/.json?limit= 2。 请求的资源上没有“Access-Control-Allow-Origin”标题。 Origin ...因此不被允许访问。
您正尝试执行跨域请求。 这是浏览器禁止的(它只会让你向你的页面最初加载的同一个域发出请求)。 这不是特定于角度,而只是一般的Ajax请求。
你可以在这里读到它:
http://en.wikipedia.org/wiki/Same-origin_policy
有几种方法,比如JSONP和CORS。 两者都需要服务器端的支持。 你将不得不看看你正在调用的服务,看看它可能支持的服务。
您可以阅读关于如何在此处执行JSONP请求的信息:
http://docs.angularjs.org/api/ng.$http
您不能访问其他网站上的资源。
你需要使用jsonp。
这是一个未经测试的修改后的代码,请尝试查看它是否正常工作:
var dataUrl = 'http://www.reddit.com/r/pics/comments/1ua1nb/.json?jsonp=JSON_CALLBACK&limit=2';
$http.jsonp(dataUrl).
success(function(data, status, headers, config)
{
window.alert('success:' + status);
}).
error(function(data, status, headers, config) {
window.alert('error:' + status);
});
更多阅读:http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
链接地址: http://www.djcxy.com/p/20129.html