2012-10-05 73 views
0

嗨我有一個調用json的ajax,我想讓這個json對象成爲一個javascript全局引用,這樣我就可以使用這個引用來訪問json對象。這裏是代碼。json對象到javascript全局引用

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的引用變量/對象。

+0

不是這個代碼是否按照預期工作,U得到任何錯誤? –

+1

你的問題是什麼? –

+0

'nextAlbum函數(){...'是一個語法錯誤。 – lanzz

回答

1

如果我正確地理解了你的問題,那麼你遇到了異步性質getJSON的問題。

由於getJSON異步jsonData變量將不包含任何數據,直到異步調用已收到響應並執行回調。如果您在發生此問題之前嘗試訪問jsonData,則可能會遇到錯誤。

您需要將任何依賴於jsonData的代碼移動到回調函數中。


注意,上述假設你的語法錯誤是產生問題的只是一個結果而不是你的實際代碼的一部分。

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*/ 
} 
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);