2

サーバーからjsonファイルを取得しようとしています。これまでは、常に json ファイルが必要でした。それは ajax によって取得され、サーバー内の php ファイルが json ファイルを作成していました。

この構造のjsonファイル(X.json)はありません:

{
"zona": [
    {
        "zona1": [
            {
                "lon": "a",
                "lat": "b"
            },
            {
                "lon": "aa",
                "lat": "bb"
            },
            {
                "lon": "aaa",
                "lat": "bbb"
            },
            {
                "lon": "aaaa",
                "lat": "bbbb"
            }
        ]
    },
    {
        "zona2": [
            {
                "lon": "c",
                "lat": "d"
            },
            {
                "lon": "cc",
                "lat": "dd"
            },
            {
                "lon": "ccc",
                "lat": "ddd"
            },
            {
                "lon": "cccc",
                "lat": "dddd"
            },
            {
                "lon": "ccccc",
                "lat": "ddddd"
            }
        ]
    }
]
}

同じ方法でファイルを取得しようとしても、何も取得できませんでした。javascriptファイルのようにWebページを読み込んだときにファイルを追加できるのではないかと思います。または、おそらくjsonpを使用しますが、試してみましたが、悪い答えが得られました。

json の試行として、次を使用しました。

$.ajax({
        url: 'localhost/open/listaPuntosZona.json',
        type: 'GET',
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        jsonp: "callback",
        jsonpCallback: "jsonpCallbackfunction",
        error: function () {
            alert("Error in Jsonp");
        }
    });

function jsonpCallbackfunction(responseData) {
alert(responseData);    

}

また、jsonファイルを次のようにラップしました: callback( jsonfile code)

また、この他の2つの試行:

$.ajax({ 
  url: 'localhost/open/listaPuntosZona.json', 
  type: 'get', 
  error: function(data){ }, 
  complete: function(data){ 

    data=jQuery.parseJSON(data); //do something with data

    alert(data.zona.zona1.length);
  }
});



$.getJSON('localhost/open/listaPuntosZona.json',function(jsonData){
    alert("hola");
    alert(jsonData);
});

lampp を使用して Web ページをテストしています。

何かを変更する必要がありますか? 過去にjsonpを使用しましたが、今何が間違っているのかわかりません。

4

2 に答える 2

1

まず、$.getJSON()プレーンな$ .ajax()の代わりに使用してみてください。それはすぐに多くの問題を解決します。

http://api.jquery.com/jQuery.getJSON/

次に、jsonファイルが完全にフォーマットされており、緩い文字や奇妙な空白がないことを確認します。

また、エラーハンドラーをajax呼び出しにチェーンしてみてください。上記のgetJSONドキュメントで入手できます。

var jqxhr = $.getJSON("example.json").error(function() { alert("error"); });
// this is according to documentation, i cannot currently test this to work, sorry about that.
于 2012-07-18T10:31:28.943 に答える