我对此还很陌生,所以请放轻松:
我正在构建一个图像库,其中包含一个主索引页面,允许用户选择不同类别的项目,一个子索引页面,允许用户在所选类别中选择特定项目,然后是该项目的图库页面。
下面的代码用于主索引页面。我正在尝试将第一个图库页面的第一个图像的 src
属性的值传递到主索引页面以用作缩略图。
我实际上已经能够将正确的 URL 加载到 imageLoc
变量中,但我需要将其传递到 Ajax 请求之外才能将其传递到我的 HTML 文档中。
简单地说,我试图将 imageURL 变量的值传递给 imageLoc 变量。
感谢您的帮助。
$('.galleryIndex a img').hide().each(function(){
var destination = $(this).parent('a').attr('href');
var imageLoc = $.ajax({
url: destination,
success: function(data){
var pageLoc = $(data).find('.galleryList a:first').attr('href');
$.ajax({
url: pageLoc,
success: function(data){
var imageURL = $(data).find('.galleryBox img:first').attr('src');
return imageURL
}
});
}
});
alert(imageLoc);
});
最佳答案
这会给回调函数的处理方式带来麻烦。它是一个在请求返回后调用的闭包 block ,因此它与函数中的主代码分开运行。如果你想提醒 imageURL 变量,请在回调函数中提醒它,或者调用另一个函数来处理它。由于它是异步服务器请求的回调函数,因此在您返回异步请求之前,警告“imageLoc”的部分将已经运行很长时间。
编辑:实现您想要做的事情的唯一方法是不异步发出ajax请求。如果您设置async:false
,那么您可以像这样调用“responseText”属性:
var html = $.ajax({
url: "some.php",
async: false
}).responseText;
但请注意...这将在请求挂起时停止浏览器操作。如果您不希望用户在加载某些内容时破坏页面,通常最好通过其他方式阻止用户交互。
关于javascript - 返回 Ajax 请求之外的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3771310/