Javascript 如何等待getJSON获取jQuery中的所有记录
我有一个脚本,我使用jQuery从Flickr中提取照片。我正在使用zFlickrFeed脚本。我需要从Flickr中获得300张图片,但目前我获得了20张。我想这是因为我的Javascript 如何等待getJSON获取jQuery中的所有记录,javascript,jquery,getjson,flickr,Javascript,Jquery,Getjson,Flickr,我有一个脚本,我使用jQuery从Flickr中提取照片。我正在使用zFlickrFeed脚本。我需要从Flickr中获得300张图片,但目前我获得了20张。我想这是因为我的getJSON方法在完成之前被中断了 我如何等到所有300个都消失了,然后调用我的条件方法?条件中的方法实质上将JSON数据呈现为网格或列表样式的布局 (function($){ $.fn.flickrfeed = function(userid, tags, options) { // Set plugin d
getJSON
方法在完成之前被中断了
我如何等到所有300个都消失了,然后调用我的条件方法?条件中的方法实质上将JSON数据呈现为网格或列表样式的布局
(function($){
$.fn.flickrfeed = function(userid, tags, options) {
// Set plugin defaults
var defaults = {
limit: 300,
header: true,
layout: 'list',
imagesize: 'small',
titletag: 'h4',
title: true,
description: true,
date: true
};
var options = $.extend(defaults, options);
// Functions
return this.each(function(i, e) {
var $e = $(e);
// Add feed class to user div
if (!$e.hasClass('flickrFeed')) $e.addClass('flickrFeed');
// Define Flickr feed API address
var api = 'http://api.flickr.com/services/feeds/photos_public.gne?lang=en-us&format=json&jsoncallback=?';
if (userid != '') api += '&id=' + userid;
if (tags != '') api += '&tags=' + tags;
// Send request
$.getJSON(api, function(data) {
// Process the feeds
if(options.layout == 'list') {
_callback(e, data, options);
}
else if(options.layout == 'grid') {
_altcallback(e, data, options);
}
});
});
};
我会创建一个计数器,一旦它达到所需的调用次数,我就会点击success函数 我想补充一点:
var计数器=此长度
在$.getJSON success函数中,我要添加:
如果(--计数器>0)返回代码>
代码如下:
var counter = this.length;
return this.each(function(i, e) {`
var $e = $(e);
// Add feed class to user div
if (!$e.hasClass('flickrFeed')) $e.addClass('flickrFeed');
// Define Flickr feed API address
var api = 'http://api.flickr.com/services/feeds/photos_public.gne?lang=en-us&format=json&jsoncallback=?';
if (userid != '') api += '&id=' + userid;
if (tags != '') api += '&tags=' + tags;
// Send request
$.getJSON(api, function(data) {
if (--counter > 0) return;
// Process the feeds
if(options.layout == 'list') {
_callback(e, data, options);
}
else if(options.layout == 'grid') {
_altcallback(e, data, options);
}
});
});
您是否尝试将getJSON重写为成熟的$.ajax调用,然后使用.done()或success函数调用
$.ajax({
url:api
}).完成(功能(数据){
//加工饲料
});代码>
或
$.ajax({
url:api
成功:
功能(数据){
//加工饲料
}
});代码>您是否尝试添加一些检查以确保这是因为您的getJSON
?可以尝试使用
ajaxSetup()将async
设置为false。我不明白您为什么返回这个。each()。您确定这不是Flickr API的限制吗?@FIA2008:请不要建议使用async:false
。从jQuery 1.8开始,它就被弃用了,它会在请求完成之前锁定浏览器,从而创造了糟糕的用户体验。我不知道为什么Cerburs会将其作为副本关闭,因为它不是。