事情是:我有一个页面,其中必须显示未确定数量的图像,这些页面是通过AJAX(在服务器端使用base64编码)一张一张地加载的。
var position = 'front';
while(GLOB_PROCEED_FETCH)
{
getImageRequest(position);
}
function getImageRequest(position)
{
GLOB_IMG_CURR++;
$.ajax({
url: urlAJAX + 'scan=' + position,
method: 'GET',
async: false,
success: function(data) {
if ((data.status == 'empty') || (GLOB_IMG_CURR > GLOB_IMG_MAX))
{
GLOB_PROCEED_FETCH = false;
return true;
}
else if (data.status == 'success')
{
renderImageData(data);
}
}
});
}
问题是仅当获取所有图像时,才将图像(由renderImageData()函数构造)附加到所有DIV中(一起)。我的意思是,直到循环结束,才有可能进行任何DOM操作。
由于可能会有大量的图像,因此我需要一张一张地加载和显示图像,因此我无法将它们堆叠起来,直到将它们全部取出为止。
最好的选择是重组代码以使用异步ajax调用,并在第一个调用完成时启动下一个调用,依此类推。这将允许页面在图像获取之间重新显示。
这也将使浏览器有机会喘口气并进行其他家务管理,而不会认为它已被锁定或挂起。
而且,使用async: 'false'
是一个坏主意。我没有理由理解为什么结构正确的代码无法在此处使用异步ajax调用,并且在获取此数据时不会挂起浏览器。
您可以使用异步ajax来做到这一点,如下所示:
function getAllImages(position, maxImages) {
var imgCount = 0;
function getNextImage() {
$.ajax({
url: urlAJAX + 'scan=' + position,
method: 'GET',
async: true,
success: function(data) {
if (data.status == "success" && imgCount <= maxImages) {
++imgCount;
renderImageData(data);
getNextImage();
}
}
});
}
getNextImage();
}
// no while loop is needed
// just call getAllImages() and pass it the
// position and the maxImages you want to retrieve
getAllImages('front', 20);
而且,尽管这看起来像递归,但由于ajax调用的异步特性,它并不是真正的递归。
getNextImage()
在下一个调用之前实际上已经完成,因此从技术上讲它不是递归。
问题内容: 嗨,我的脚本中有2个Ajax调用,我需要它们运行asnyc以节省时间,但是我需要第二个才能等待第一个完成。 有什么想法吗?谢谢 问题答案: 如果使用jQuery 1.5+,则可以使用jQuery 完成。诸如此类的东西(缩短了ajax的简洁性,只需像上面那样传递对象) 您不知道它们将以什么顺序返回,因此,如果您手动滚动此请求,则需要检查另一个请求的状态并等待它返回。
问题内容: 我是AJAX的新手,我正在编写一个用户脚本,该脚本将处理页面上的一堆链接并为每个链接进行AJAX调用。 简单地说,我有一个包含链接列表的页面。我希望遍历链接并获取AJAX来处理每个链接页面的内容,并报告该页面是否包含指定内容。 我遇到的问题是用于遍历linkList的[i]的值始终为6,应该永远不会。我假设我需要传递一些数据,以便当.done最终触发时,它从AJAX首次触发时知道其[i
本文向大家介绍jQuery 中ajax异步调用的四种方式,包括了jQuery 中ajax异步调用的四种方式的使用技巧和注意事项,需要的朋友参考一下 以上就是本文的全部内容,了解更多jQuery的语法,大家可以查看:《jQuery 1.10.3 在线手册》,也希望大家多多支持呐喊教程。
问题内容: 我有问题.. 问题是:是不是我没有把来自 file.php的 数据仅放在最后一个div中,所以ID为9,但是现在有-所以数据在每个div中,所以这很好 但是如果我想在通过ajax加载时单击,则无法正常工作(仅在完成所有ajax-es之后) 如何解决这个问题?(也许是错误的,因为我在使用ajax。我可以使用getJSON等。) 谢谢你的帮助 问题答案: 如果希望用户在ajax调用运行时能
问题内容: 在这里,我粘贴了代码,我想返回$ .ajax的响应作为函数a()的响应。但是在ajax调用的结果出现之前,它会返回空的f。请帮忙 问题答案: 我猜您正在使用jQuery 1.8+ http://api.jquery.com/jQuery.ajax/ 请阅读细则。 在jQuery 1.8,采用异步的:与jqXHR($ .Deferred)虚假被 弃用 ; 您必须使用complete /
本文向大家介绍jquery中的ajax异步上传,包括了jquery中的ajax异步上传的使用技巧和注意事项,需要的朋友参考一下 找了好久终于在网上找到了ajax异步上传文件的方法,不过网上大多数是php的 ,我改为struts2写的 大同小异,希望对学习java的人有一定的帮助。我上传的是音乐文件。 ajaxfileupload.js这个js文件是主要文件,一定要导入。 jsp页面 ,其中我还做