javascript - 返回 Ajax 请求之外的字符串

标签 javascript jquery ajax

我对此还很陌生,所以请放轻松:

我正在构建一个图像库,其中包含一个主索引页面,允许用户选择不同类别的项目,一个子索引页面,允许用户在所选类别中选择特定项目,然后是该项目的图库页面。

下面的代码用于主索引页面。我正在尝试将第一个图库页面的第一个图像的 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/

相关文章:

Javascript从ajax函数传递变量

javascript - 如何使用 replace 方法重写 url 路径?

javascript - VueJS 根据 watch 中的键从对象数组中获取唯一值

JQuery 表单提交前验证失败

javascript - 出现错误无法读取未定义的属性 'getTime'

ajax - ASP.NET MVC JSON 对象可以通过带有动态类型参数的参数传递给 Controller ​​吗?

javascript - Uncaught ReferenceError , "..."未定义

php - 如何为外部 javascript 文件设置变量?

jquery - mediaelement.js 改变皮肤

java - 如何使用 Spring api 正确发送 JSON 数组?