我遇到了一个问题。当我使用http://headers.jsontest.com/
时,我获得了价值。这是我的代码
<div id="ip"></div>
<script type="text/javascript">
var getJSON = function(url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
resolve(xhr.response);
}
else {
reject(status);
}
};
xhr.send();
});
};
getJSON('http://headers.jsontest.com/').then(function(data) {
for(x in data){
ip.innerText = data.Host;
}
}, function(status) {
alert('Something went wrong.');
});
</script>
但是当我使用此链接时,我没有得到任何值My Link。为什么它不起作用
getJSON('http://67.225.137.209/index.php/queue_manage_api/queue/doc_id/3536/loc_id/4696/username/9791a47fef07649b1c3e70749e898153/password/2d593e25d0560b19fd84704f0bd24049/format/json').then(function(data) {
for(x in data){
ip.innerText = data.id;
}
}, function(status) {
alert('Something went wrong.');
});
如果是默认数据格式{data}
,那么我得到默认值但是当数据格式如[{data}]
时,我也没有得到任何值。我的数据格式如[{data}]
这个。那么如何获取我的数据
答案 0 :(得分:1)
浏览器安全性正在激活。您需要通过在回复中添加此标头来启用CORS:
Access-Control-Allow-Origin:*
如果查看“网络”标签(F12),您会看到http://headers.jsontest.com/
已在执行此操作。
在这里,您可以阅读有关CORS的更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
如果服务器不是你的,你不能添加CORS,那么他们将有理由不这样做(因为xD的原因称为安全性)。也许他们没有注意到,你可以让他们启用它。
Protip:检查前端代码时,请始终打开开发人员工具(F12)(控制台选项卡)。
答案 1 :(得分:0)
我在下面编辑了我的代码并且工作正常。它给了我想要的输出。
<script type="text/javascript">
$.ajax({
xhrFields: {cors: false},
url: "http://67.225.137.209/index.php/queue_manage_api/queue/doc_id/3536/loc_id/4696/username/9791a47fef07649b1c3e70749e898153/password/2d593e25d0560b19fd84704f0bd24049/format/json",
type: "GET",
crossDomain: true,
dataType: "jsonp",
success: function (response) {
var resp = response; //JSON.parse(response);
//alert(resp); //.status);
for(x in resp){
document.getElementById("ip").innerHTML += resp[x].name+" "+resp[x].id+" ";
}
},
error: function (xhr, status) {
alert("error");
}
});
</script>