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

修改后的代码:由于是异步调用,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 回答
1

如果我正确理解了您的问题,那么您将遇到getJSON.

由于getJSON异步jsonData的,因此在异步调用收到响应并执行回调之前,您的变量将不包含任何数据。如果您在此之前尝试访问jsonData,您可能会遇到错误。

您需要将任何依赖的代码移到jsonData回调函数中。


请注意,以上假设您的语法错误只是创建问题的结果,而不是您实际代码的一部分。

于 2012-10-05T09:48:23.630 回答
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 回答