Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单JSON请求_Javascript_Json_Angularjs_Httprequest - Fatal编程技术网

Javascript 简单JSON请求

Javascript 简单JSON请求,javascript,json,angularjs,httprequest,Javascript,Json,Angularjs,Httprequest,这可能会让我看起来像一个完全的初学者,当谈到角度,我是,但我的问题是: 我试图向.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) {

这可能会让我看起来像一个完全的初学者,当谈到角度,我是,但我的问题是:

我试图向.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(未实现) 加载资源失败:请求的资源上不存在“访问控制允许来源”标头。起源。。。因此不允许访问。
无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。起源。。。因此不允许访问。

您正在尝试执行跨域请求。这是浏览器禁止的(它只允许您向最初从中加载页面的同一域发出请求)。这并不是特定于angular,而是一般的ajax请求

您可以在此处阅读:

有几种方法可以解决这个问题,比如JSONP和CORS。两者都需要服务器端支持。您必须查看您正在呼叫的服务,看看它可能支持哪些服务

您可以在此处阅读如何执行JSONP请求:


.$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);
    });
更多内容请阅读:

浏览器中的JavaScript错误控制台显示了什么?如何检查?我刚刚尝试了警报(状态),这给了我0,我猜这是未定义的..取决于您的浏览器。你在测试什么浏览器?Chrome是我使用的浏览器View→ 开发商→ reddit响应的JavaScript控制台具有
访问控制允许源代码:
头文件,虽然您是对的,但一定有什么东西干扰了他的头文件(可能是某种奇怪的代理文件)。它在这里起作用: