如何在javascript中以json格式从数组中获取数据

时间:2017-03-22 10:58:29

标签: javascript php json

我遇到了一个问题。当我使用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}]这个。那么如何获取我的数据

2 个答案:

答案 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>