角度简单的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/1u​​a1nb/.json?limit=2加载资源失败:无'Access- Control-Allow-Origin'标题出现在请求的资源上。 Origin ...因此不被允许访问。 http://www.reddit.com/r/pics/comments/1u​​a1nb/.json?limit=2 XMLHttpRequest无法加载http://www.reddit.com/r/pics/comments/1u​​a1nb/.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

上一篇: Angular simple JSON request

下一篇: How to get POSTed json in Flask?