尝试从给定的URL

时间:2018-02-01 16:06:36

标签: javascript html json http

所以我收到了一个网址:“http://theossrv2.epfl.ch/aiida_assignment2/api/points/”,我一直试图从这个网址获取JSON。这是我到目前为止所做的:

var getJSON = function (url, callback) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'json';
    xhr.onload = function () {
        var status = xhr.status;
        if (status === 200) {
            callback(null, xhr.response);
        } else {
            callback(status, xhr.response);
        }
    };
    xhr.send();
}

getJSON('http://theossrv2.epfl.ch/aiida_assignment2/api/points/',
    function (err, data) {
        if (err !== null) {
            alert('Something went wrong: ' + err);
        } else {
            alert('Your max_x: ' + data.max_x);
        }
    });

现在,我只是将max_x放在一个警告框中,只是为了看看我是否恢复了它(似乎就是这种情况)。但是当我试图以“圆圈”(即x或y坐标甚至是id)恢复数据时,我得到“未定义”(在警告框中),我不明白为什么,也不知道我怎么做实际上恢复存储在“圆圈”中的数据。

问题是,我希望能够解析我从这个网址获得的JSON,因为我需要在画布上绘制这些圆圈,如果我无法恢复这些坐标,我就无法做到。

我希望我已经足够清楚了。请注意,一般来说,我只是初学者,一般都是用JS和HTML编码,所以如果你觉得很明显,那对我来说可能就不是这样了。

3 个答案:

答案 0 :(得分:3)

您的数据变量包含具有以下键的对象:

{
    circles: [ ... ],
    range: {
        max_x: 300,
        ...
    }
}

因此,为了获得max_x,您需要阅读data.range.max_x属性,而不仅仅是data.max_x

对于circles中的数据,您将在data.circles中拥有对象数组,因此您可以使用for循环对其进行迭代,例如:

for (var i = 0; i < data.circles.length; i++) {
    // data.circles[i] contains object with { id, x, y } properties
}

答案 1 :(得分:0)

从服务器返回的

z-index实际上是一个具有密钥 .modal-backdrop { z-index: 100000 !important; } .modal { z-index: 100001 !important; } &amp;的对象。 datacirclesrange密钥的属性。你可以得到:

max_x

答案 2 :(得分:0)

因为它发送了

的对象
{
 "circles": [
  {
    "id": 0,
    "x": 52.47599289586478,
    "y": 249.77824107448706
  },
  {
    "id": 1,
    "x": 281.34253692626953,
    "y": 281.34253692626953
  },
  {
    "id": 2,
    "x": 99.59752655029297,
    "y": 99.36786252693544
  }
],
 "range": {
  "max_x": 300,
  "max_y": 300,
  "min_x": 0,
  "min_y": 0
 }
}

所以你需要data.range.max_x