Jquery 使用JSON变量作为公共变量?

Jquery 使用JSON变量作为公共变量?,jquery,json,flickr,Jquery,Json,Flickr,我正在将我的Flickr集加载到我的网站,如下所示: $(window).load(function() { var apiKey = 'xxx'; var userId = '8378546@N08'; $.getJSON('http://api.flickr.com/services/rest/?format=json&method=flickr.photosets.getPhotos&photoset_id=' + photoset_id + '&per_page

我正在将我的Flickr集加载到我的网站,如下所示:

$(window).load(function() {
var apiKey = 'xxx';
var userId = '8378546@N08';

$.getJSON('http://api.flickr.com/services/rest/?format=json&method=flickr.photosets.getPhotos&photoset_id=' + photoset_id + '&per_page=1000' + '&page=1' + '&api_key=' + apiKey + '&user_id=' + userId + '&jsoncallback=?', function(data) {
    $.each(data.photoset.photo, function(i, flickrPhoto){
        var basePhotoURL = 'http://farm' + flickrPhoto.farm + '.static.flickr.com/'
        + flickrPhoto.server + '/' + flickrPhoto.id + '_' + flickrPhoto.secret + "_z.jpg";  

        var fullPhotoURL = 'http://farm' + flickrPhoto.farm + '.static.flickr.com/'
        + flickrPhoto.server + '/' + flickrPhoto.id + '_' + flickrPhoto.secret + "_l.jpg";          

        /*var FlickrLink = "http://www.flickr.com/photos/" + data.photoset.owner + "/" + flickrPhoto.id + "/";*/
        $("<img/>").attr("src", basePhotoURL).appendTo("#photographs").wrap(("<div class='item'></div>"))

    });

    **$("<a href='#' class='zoom'/>").appendTo(".item");**
    **$("<a href='#' class='flickr'/>").appendTo(".item");**

    $("#photographs").gridalicious({
        gutter: 2,
        animate: true,
        effect: 'fadeInOnAppear',
        width: 320,
        complete: onComplete()
    });

    function onComplete(){
        $("#loader").delay(20000).fadeOut("slow");
        $(".item").hover(function(){
            $(".zoom, .flickr", this).stop(true,true).fadeIn(300);
        }, function () {
            $(".zoom, .flickr", this).stop(true,true).fadeOut(300);
        });
    }
});
});
$(窗口).load(函数(){
变量apiKey='xxx';
var userId='1〕8378546@N08';
$.getJSON('http://api.flickr.com/services/rest/?format=json&method=flickr.photosets.getPhotos&photoset_id=“+photoset_id+”&per_page=1000“+”&page=1“+”&api_key='+apiKey+'&user_id='+userId+'&jsoncallback=?”,函数(数据){
$。每个(data.photoset.photo,函数(i,Flickphoto){
var basePhotoURL=http://farm“+flickrPhoto.farm+”.static.flickr.com/”
+flickrPhoto.server+'/'+flickrPhoto.id+'.'.'+flickrPhoto.secret+“_z.jpg”;
var fullPhotoURL=http://farm“+flickrPhoto.farm+”.static.flickr.com/”
+Flickphoto.server+'/'+Flickphoto.id+'.'+Flickphoto.secret+“_l.jpg”;
/*var FlickrLink=”http://www.flickr.com/photos/“+data.photoset.owner+”/“+flickrPhoto.id+”/”*/
$(""))
});
**$(“”)。附件(“.item”)**
**$(“”)。附件(“.item”)**
美元(“#照片”)。网格化({
排水沟:2,
动画:对,
效果:“fadeInOnAppear”,
宽度:320,
完成:onComplete()
});
函数onComplete(){
$(“#加载程序”)。延迟(20000)。淡出(“慢”);
$(“.item”).hover(函数(){
$(“.zoom.flickr”,this).stop(真,真).fadeIn(300);
},函数(){
$(“.zoom,.flickr”,this).stop(真,真).fadeOut(300);
});
}
});
});
.zoom和.flickr div追加到.item div(包含图片)之后。我需要varfullPhotoURL和varFlickrLink,因为我想在代码中突出显示(带星星)的锚中使用它们。当我这样做时,我得到一个错误,varfullPhotoURL和varFlickrLink都找不到


如何解决此问题?

您必须在$之外定义变量。每个块:

$.getJSON('http://api.flickr.com/services/rest/?format=json&method=flickr.photosets.getPhotos&photoset_id=' + photoset_id + '&per_page=1000' + '&page=1' + '&api_key=' + apiKey + '&user_id=' + userId + '&jsoncallback=?', function(data) {

    var fullPhotoURL, FlickrLink;

    $.each(data.photoset.photo, function(i, flickrPhoto){
        var basePhotoURL = 'http://farm' + flickrPhoto.farm + '.static.flickr.com/'
        + flickrPhoto.server + '/' + flickrPhoto.id + '_' + flickrPhoto.secret + "_z.jpg";  

        fullPhotoURL = 'http://farm' + flickrPhoto.farm + '.static.flickr.com/'
        + flickrPhoto.server + '/' + flickrPhoto.id + '_' + flickrPhoto.secret + "_l.jpg";          

        /*FlickrLink = "http://www.flickr.com/photos/" + data.photoset.owner + "/" + flickrPhoto.id + "/";*/
    $("<img/>").attr("src", basePhotoURL).appendTo("#photographs").wrap(("<div class='item'></div>"))

   });

   $("<a href='#' class='zoom'/>").appendTo(".item");
$.getJSON('http://api.flickr.com/services/rest/?format=json&method=flickr.photosets.getPhotos&photoset_id=“+photoset_id+”&per_page=1000“+”&page=1“+”&api_key='+apiKey+'&user_id='+userId+'&jsoncallback=?”,函数(数据){
var fullPhotoURL,FlickrLink;
$。每个(data.photoset.photo,函数(i,Flickphoto){
var basePhotoURL=http://farm“+flickrPhoto.farm+”.static.flickr.com/”
+flickrPhoto.server+'/'+flickrPhoto.id+'.'.'+flickrPhoto.secret+“_z.jpg”;
fullPhotoURLhttp://farm“+flickrPhoto.farm+”.static.flickr.com/”
+Flickphoto.server+'/'+Flickphoto.id+'.'+Flickphoto.secret+“_l.jpg”;
/*FlickrLink=”http://www.flickr.com/photos/“+data.photoset.owner+”/“+flickrPhoto.id+”/”*/
$(""))
});
$(“”)。附件(“.item”);

要在Javascript中定义全局变量,需要跳过
var
声明项

var
“表示”拉丁美洲变量

首先为变量指定一个默认值:

fullPhotoURL = null;
FlickrLink = null; //Avoid first upcase char to define variable

然后这些变量将在所有函数中可用

然后我在URL上收到“未定义”。$(“”).appendTo(.item);这是因为它是异步的。您需要$(“”).appendTo(.item);在您的getJSON子句中,my bad。它在getJSON块中。请尝试将声明在$.getJSON和$.each之间移动,如上所示。是的,它已经在JSON范围内。当我放入each函数时,它会工作,但它当然会为该函数中的所有照片生成url。item会使我的浏览器崩溃。.edit:@asgoth:still“undefined”。感谢您提供关于第一个大写字符的提示。这是可行的,但现在我得到了url的“undefined”。请参见下文。