2
我使用d3.json()請求JSON對象和分析/可視化吧...D3 JSON請求得到XmlHttpRequest的錯誤:地空沒有被允許訪問控制允許來源
這是被請求從一個Java Servlet的doGet功能...我知道一個事實,即我的Java服務器成功發送JSON到瀏覽器。但是,我遇到了試圖解析json的問題。 d3.json應該執行http獲取請求,但由於某種原因,它返回一個XML請求錯誤:
XMLHttpRequest無法加載「http:// localhost:8080/cluster」。 Access-Control-Allow-Origin不允許Origin null。
是否有一些進一步的設置,我應該知道與d3.json或它應該只是開箱即用?這是我的代碼..
d3.json("http://localhost:8080/cluster", function(json) {
//do visualization
var node = vis.data([json]).selectAll("g.node")
.data(pack.nodes)
.enter().append("g")
.attr("class", function(d) {return d.children ? "node" : "leaf node" ;})
.attr("transform", function(d) {return "translate(" + d.x + "," + d.y +")"; });
node.append("title")
.text(function(d) { return d.name + (d.children ? "" : ": " + format(d.size)); });
node.append("circle")
.attr("r", function(d) { return d.r; });
node.filter(function(d) { return !d.children; }).append("text")
.attr("text-anchor", "middle")
.attr("dy", ".3em")
.text(function(d) { return d.name.substring(0, d.r/3); });
}
我在這裏做錯了什麼?我主要感到困惑,因爲d3.json應該默認做一個HTTP get,但是它返回一個XMLHTTPrequest錯誤...
它與D3無關,如果訪問不被允許,您對另一個域所做的任何XMLHTTPRequest都會拋出此錯誤。你如何加載包含此代碼的頁面? – 2012-07-24 00:03:58
我明白了...我該如何解決跨平臺的資源共享問題?這是應該在JavaScript或我的碼頭服務器中設置的東西嗎? – capkutay 2012-07-24 00:08:54
您的服務器必須設置適當的HTTP標頭。請參閱https://en.wikipedia.org/wiki/Cross-origin_resource_sharing。但是如果服務器也在服務這個頁面,那麼你應該這樣做。 – 2012-07-24 00:11:31