这可能会让我看起来像一个初学者,我就是角度,但这是我的问题:
我正在尝试向.JSON api发出一个简单的请求,但我只是不断收到错误状态码。
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”标头。原因......因此不允许访问。 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”标头。因此,不允许访问来源。
答案 0 :(得分:2)
您正在尝试执行跨域请求。这是浏览器禁止的(它只允许您向最初加载页面的同一域发出请求)。这不是特定于角度的,而是一般的ajax请求。
你可以在这里阅读:
http://en.wikipedia.org/wiki/Same-origin_policy
有几种方法,例如JSONP和CORS。两者都需要服务器端支持。您必须查看您正在呼叫的服务,以查看它可能支持的服务。
您可以在此处阅读有关如何执行JSONP请求的信息:
答案 1 :(得分:0)
您不能访问其他网站上的资源。
你需要使用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