无法从本地域 URL 的文件(Django 静态文件)获取 JSON 数据



我想从JSON文件加载数据以用于d3.js

我使用的是Django,JSON文件json_path的URL如下所示:/staticfile/example.json。我使用以下代码来读取数据并执行操作:

d3.json(json_path, function(error, data){
// Do stuff with data
}

如果我在浏览器上使用服务器的本地IP:192.168.x.x,一切都很好。

但是,当我使用指向192.168.x.x的本地域foo.com时,我无法再从d3.json()加载数据data为空,我无法理解error的内容。

我错过了一些明显的东西,可能与回调有关,但我很难理解大局。整个Django服务器从192.168.x.xfoo.com都能很好地工作,而且一切都是本地的。有什么想法吗?

error为:

XMLHttpRequest​mozAnon: false
mozSystem: false
​onabort: null
​onerror: function respond()​
onload: function respond()​
onloadend: null
​onloadstart: null
onprogress: function onprogress()​
onreadystatechange: null​
ontimeout: null​
readyState: 4
​response: ""​
responseText: ""
​responseType: ""​
responseURL: ""
​responseXML: null
​status: 0
statusText: ""
​timeout: 0​
upload: XMLHttpRequestUpload { onloadstart: null, onprogress: null, onabort: null, … }​
withCredentials: false​
<prototype>: XMLHttpRequestPrototype { open: open(), setRequestHeader: setRequestHeader(), send: send(), … } page:472:7

我使用的库使用D3版本3.5.2,在这种特殊情况下无法更新。

一般来说,D3没有像jQuery和其他库那样优先考虑真正强大的AJAX支持,因为这不是它的重点-所以如果你想加载各种外部资源,比如json数据,你可能应该使用第三方库来加载,它更支持仔细调整的AJAX调用。

或者简单地使用包装在makeRequest函数中的XMLHttpRequest:

function makeRequest(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", json_path, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadyStatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
callback(JSON.parse(xhr.response));
}
};
xhr.onerror = function(error) {
throw error;
}
xhr.send(); 
};
makeRequest(json_path, function(json_response) {
//here you can use D3 to load your json as you want
console.log(json_response);
});

相关内容

  • 没有找到相关文章

最新更新