2011-11-08 12 views
1

次のコードでchoropleth.jsというファイルに:私は負荷にしようとしているJSONオブジェクトがロードされないRails3アプリでD3ライブラリ経由でローカルJSONオブジェクトを読み込む方法は?

d3.json("assets/data/us-counties.json", function(json) { 
counties.selectAll("path") 
    .data(json.features) 
    .enter().append("svg:path") 
    .attr("class", data ? quantize : null) 
    .attr("d", path); 
}); 

。私は次のエラーを取得する:

choropleth.js:18 Uncaught TypeError: Cannot read property 'features' of null 

私は(など、ビューに対する、.jsファイルへの相対、絶対)パスのすべてのバリエーションを試してみたし、それがどれも機能しません。私はd3ライブラリを使用していますが、私はこれで何の役割も果たしていないと思っています。質問はシンプルです。 "ローカルの.jsonファイルをロードするために指定するURLは何ですか?"

これ以上の情報が必要な場合は、教えてください。あなたが答えを知らない場合でも、可能であれば、私はより多くの情報に向かってください。私はこれを研究すること以上に喜んでいます。ありがとう...

+0

ステータスJSONファイルをロードしようとしているように見えますアプリの資産からサーバーのログにエラーがありますか?サーバーのディレクトリツリー内のJSONファイルはどこにありますか?あなたは正しいルートを持っていると確信していますか? –

+0

JSONは郡の境界座標に関するデータです。私はassets/dataディレクトリに配置します(データディレクトリを作成した後)。ファイルはapp/assets/data/us-counties.jsonにあります。私はそれのために設定されたルートを持っていません。 – jclement

+0

あなたは "d3.json"を呼び出し、 "json"パラメータを渡さないでください。だから、それはnullです。 – megas

答えて

0

コールバック関数がnullを渡した場合、それはファイルのロードに失敗したためです。これにはさまざまな原因が考えられます。ファイルがロードされていない理由を把握するには、WebKitの開発者ツールとネットワークインスペクタを使用する方法があります。

たとえば、正しいURLがない場合、404エラーが表示され、要求されたリソースが赤く表示されます。サーバーがエラーでファイルを生成できない場合は、代わりに500エラーが表示されることがあります。

同様に、ローカルファイル(アドレスバーにfile:// URL)を表示していて、d3.json経由で別のローカルファイルをロードしようとしている場合は、 XMLHttpRequestを使用してローカルファイルにアクセスできるようにします。 D3's READMEには、このエラーを回避するためにWebサーバーを起動する手順が記載されています。

1

1418350に疑問を私の答えを参照してください。基本的には、JSONのコールバックのための2つの引数を提供する必要があり、最初のものエラー、例えば:

d3.json("world-countries.json", function(error, json) { 
    // your code 
} 
+0

この間違いは頻繁に起こります... – VividD

関連する問題