2

私は本当に少し当惑しています:

data.json というファイルに次の JSON データがあります。

{
   "locations": [
      {
         "title": "The Space Needle",
         "latitude": 47.619,
         "longitude": -122.348
      },
      {
         "title": "Albany",
         "latitude": 46,
         "longitude": -74
      }
   ]
}

次のコードを使用してデータを表示しようとすると、何も得られません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Another gone south</title>
<script src="http://code.jquery.com/jquery-1.8.0.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
/* <![CDATA[ */
$(document).ready(function(){
    $.getJSON("data.json",function(data){
        $.each(data.locations, function(i,location){
                content += '<p>' + location.title + '</p>';
                content += '<p>' + location.latitude + '</p>';
                content += '<p' + location.longitude + '</p>';
                content += '<br/>';
                alert('aler called');
                $(content).appendTo("#loc");
        });
    });   
});
/* ]]> */
</script>
</head>
<body>
        <div class="container">
                <div class="span-24">
                       <h2>Check out the following locations:</h2>
                                        <div id="loc">
                                        </div>
                </div>
        </div>
</body>
</html>
4

2 に答える 2

1

jsonが返されると仮定すると、ループは問題ないように見えます。必要なのは、JSONの結果を使用する前に解析することだけです

私はこれをもう一度見JayCて、JSON値を例に文字列(d'oh)に追加しました。もちろん、それぞれが完全に正常に機能するオブジェクトにしました。

JSONオブジェクト(文字列ではない)を使用したDEMOを参照してください

基本的に、コードは完全に正常に機能するはずです。つまり、リクエストでエラーが発生するか、何も返されません。

ブラウザのdebug-consoleでエラーを確認してください。FFではFireBugを使用でき、ChromeとIEでは組み込みのものを使用できます。

于 2012-08-14T16:54:41.357 に答える
0

ワイルドショットですが、どのブラウザを使用していますか? クロムじゃないの?Firefox でも動作しないのですか? Firefox で試してみたところ、正しく動作し、データとアラートの両方が表示されるためです。Chromeでエラーが発生します

XMLHttpRequest は file:///PATH をロードできません。Origin null は、Access-Control-Allow-Origin では許可されていません。

掘り下げた後、クロムに問題がある可能性があることがわかりました。実行する必要があるかもしれません

chrome.exe --allow-file-access-from-file

次のように、変数 'c​​ontent' (クロム用) を定義する必要がある場合もあります。

$(document).ready(function(){
    content = $(this).html();
    $.getJSON("data.json",function(data){
        $.each(data.locations, function(i,location){
                content += '<p>' + location.title + '</p>';
                content += '<p>' + location.latitude + '</p>';
                content += '<p' + location.longitude + '</p>';
                content += '<br/>';
               alert('aler called');
             $(content).appendTo("#loc");
        });
    });   
});

このようにして、ChromeとFirefoxの両方で(私のコンピューターで)機能しています。要約すると、Chrome に問題があるようで、外部サーバーで動作するはずです。

Chrome の問題リンク

于 2012-08-14T17:24:31.550 に答える