0

こんにちは、json を呼び出す ajax があります。この json オブジェクトを javascript グローバル参照にして、この参照を使用して json オブジェクトにアクセスできるようにしたいと考えていました。ここにコードがあります。

var jsonData;

$.getJSON(url, function(json) {
 jsonData = json; /*i wanted to pass this json object to global reference*/
});
nextAlbum function(){
    console.log(jsonData.albums.length); /*I have to acces here*/
}

あなたの助けに感謝します。これが私の最新のコードです。

var mysplitSlider = (function(){
var init, findTotalAlbums, countAlbum;
var jsonData;

return{
    init: function(url){
        $.getJSON(url, function(json) {
            jsonData = json;
        });
    },
    nextAlbum:function(){
        console.log(jsonData.albums.length);
    },
    previousAlbum:function(){}
};

})();

var url = "assets/images/detail_view_gallery/data.json";

mysplitSlider.init(url);

jsonの参照変数/オブジェクトにアクセスできるように助けてください。

4

3 に答える 3

1

私があなたの質問を正しく理解していれば、 の非同期性に関する問題に直面していますgetJSON

getJSON非同期であるため、非同期呼び出しが応答を受信して​​コールバックを実行するまで、jsonData変数にはデータが含まれません。それ以前にアクセスしようとするとjsonData、エラーが発生する可能性があります。

依存するすべてのコードをjsonDataコールバック関数に移動する必要があります。


上記は、構文エラーが質問を作成した結果であり、実際のコードの一部ではないことを前提としています。

于 2012-10-05T09:48:23.630 に答える
1

変更されたコード:は非同期呼び出しであるjsonDataため、すぐには使用できません。getJSON関数nextAlbum 定義が正しくありませんでした。

  var jsonData ;
$.getJSON(url, function(json) {
 nextAlbum (json);
 jsonData = json; /*i wanted to pass this json object to global reference*/
});
function nextAlbum (json){
    console.log(json.albums.length); /*I have to acces here*/
}
于 2012-10-05T09:49:38.967 に答える
0

覚えておいてください、AJAX は非同期のJavaScript と XML です...

function nextAlbum(jsonData){
    console.log(jsonData.albums.length);
    /* If you want, add a global var to save json */
}

$.getJSON(url, nextAlbum);
于 2012-10-05T09:53:07.953 に答える