Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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抛出一个网络错误,但类似的jQuery.getJSON代码也可以工作_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript JSON抛出一个网络错误,但类似的jQuery.getJSON代码也可以工作

Javascript JSON抛出一个网络错误,但类似的jQuery.getJSON代码也可以工作,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个从外部网站加载的JSON脚本。在其最简单的形式中,代码是这样的(并且工作正常): 但是,如果jQuery不是关键的,网站所有者就不想要它,因此我将.getJSON重新编码到request=new-XMLHttpRequest()模型: request = new XMLHttpRequest(); request.open("GET", "http://adressesok.posten.no/api/v1/postal_codes.json?postal_code=" + docume

我有一个从外部网站加载的JSON脚本。在其最简单的形式中,代码是这样的(并且工作正常):

但是,如果jQuery不是关键的,网站所有者就不想要它,因此我将
.getJSON
重新编码到
request=new-XMLHttpRequest()模型:

request = new XMLHttpRequest();
request.open("GET", "http://adressesok.posten.no/api/v1/postal_codes.json?postal_code=" + document.querySelector("input").value + "&callback=?", true);
request.onload = function() {
    var data = JSON.parse(request.responseText);
    document.querySelector("output").textContent = data.postal_codes[0].city; 
};
request.onerror = function() { /* this gets called every time */ };
我已经多次修改代码,一遍又一遍地阅读文档,但只有
.onerror
函数始终显示。这是控制台:

它在挪威语中表示,该脚本请求CORS,在Access Control Allow origin的头部找不到原点,XMLHttpRequest出现网络错误,并表示“无访问”

发生这种情况的原因可能有几个:

1:新代码有问题

2:
.getJSON
jQuery函数中有一些东西(黑客?)可以防止错误的发生

3:我忘记了在新代码中添加了一些至关重要的东西

4:我的浏览器有问题(目前是11)

5:还有别的吗

如果能在这方面得到一些帮助,那就太好了


演示:

这不是网络错误。这是一个跨原点错误。请求成功,但浏览器拒绝访问对JavaScript的响应

由于URL中有
callback=?
,jQuery将生成JSONP请求,而不是XMLHttpRequest请求。这将作为脚本执行响应,而不是读取原始数据

您正在手动创建一个XMLHttpRequest,因此由于同源策略,它将失败


相反。

这不是网络错误。这是一个跨原点错误。请求成功,但浏览器拒绝访问对JavaScript的响应

由于URL中有
callback=?
,jQuery将生成JSONP请求,而不是XMLHttpRequest请求。这将作为脚本执行响应,而不是读取原始数据

您正在手动创建一个XMLHttpRequest,因此由于同源策略,它将失败

取而代之。

来自:

JSONP

如果URL包含字符串“callback=?”(或类似字符串,由服务器端API定义),则请求将被视为JSONP。有关更多详细信息,请参阅$.ajax()中对jsonp数据类型的讨论

你有回电话。这意味着JQuery函数可以从另一个域请求数据,这与XHR调用不同。

来自:

JSONP

如果URL包含字符串“callback=?”(或类似字符串,由服务器端API定义),则请求将被视为JSONP。有关更多详细信息,请参阅$.ajax()中对jsonp数据类型的讨论


你有回电话。这意味着JQuery函数可以从另一个域请求数据,这与XHR调用不同。

谢谢。你能通过修改一些代码来引导我的代码朝正确的方向发展吗?我不能一个人把所有的碎片拼在一起。我在这方面不是很好。@mangseth-链接的问题有三个答案和示例。所有三个示例都向您展示了如何检索值。谢谢,我现在终于看到了。谢谢你的帮助(也谢谢你没有投我一票),谢谢。你能通过修改一些代码来引导我的代码朝正确的方向发展吗?我不能一个人把所有的碎片拼在一起。我在这方面不是很好。@mangseth-链接的问题有三个答案和示例。所有三个示例都向您展示了如何检索值。谢谢,我现在终于看到了。谢谢你的帮助(也谢谢你没有投我一票)
request = new XMLHttpRequest();
request.open("GET", "http://adressesok.posten.no/api/v1/postal_codes.json?postal_code=" + document.querySelector("input").value + "&callback=?", true);
request.onload = function() {
    var data = JSON.parse(request.responseText);
    document.querySelector("output").textContent = data.postal_codes[0].city; 
};
request.onerror = function() { /* this gets called every time */ };