0

外部の json ファイル (locations.json) を取得し、その内容を変数にロードしたいと考えています。ここで提供される情報を使用して、この変数を使用したいと思います: http://www.json.org/js.html

外部jsonを変数にロードしようとすると、多くの問題が発生しました。私はこの(json を変数にロードする)ページをかなり見てきましたが、実際に変数に値を入力するものはありません。後で変数の内容を表示すると、空のように見えます。

$("#testContain").html("<p>" + json + "</p>");

最後のリンクにリストされているメソッドを使用すると、これは「未定義」を表示します。

私が使用しているjsonファイルは次のようになります。

[{"id":"1","locname":"Dunstable Downs","lat":"51.8646","lng":"-0.536957","address":"Chiltern Gateway Centre","address2":"","city":"","state":"England","postal":"","phone":"","web":"http:\/\/www.nationaltrust.org.uk\/main\/w-dunstabledownscountrysidecentrewhipsnadeestate","hours1":"","hours2":"","hours3":""},
{"id":"2","locname":"West Delta Park","lat":"45.5974","lng":"-122.688","address":"N Broadacre St and N Expo Rd, Portland","address2":"","city":"","state":"OR","postal":"","phone":"","web":"http:\/\/en.wikipedia.org\/wiki\/Delta_Park","hours1":"","hours2":"","hours3":""}]

誰にも提案はありますか?

4

1 に答える 1

2

問題は、リクエストが非同期であることです。リンク先の質問に対する受け入れられた回答で提案されているように、同期呼び出しを行うこともできますが、応答を待っている間にブラウザーが完全にフリーズするため、一般的にはお勧めできません。

変数は問題なく割り当てられますが、リクエスト後に使用する場合は、リクエストを送信した後ではなく、レスポンスを取得した後であることを確認する必要があります。メソッドのコールバックで値を使用するのが、値がgetJSONあることを確認する最も簡単な方法です。

var my_json;
$.getJSON(my_url, function(json) {
  my_json = json;
  // here you have the value
});
// here you don't have the value, as this happens before the response arrives
于 2012-12-03T00:38:42.247 に答える