将变量传递到jQueryajax成功回调中的函数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (76)

我试图使用jQueryAjax调用预加载一些映像,但是在Ajax调用的成功函数中传递一个(Url)字符串到一个函数(如果这有意义的话)有实际问题。

下面是我的代码,如下所示:

//preloader for images on gallery pages
window.onload = function() {
    setTimeout(function() {     
        var urls = ["./img/party/"]; //just one to get started

        for ( var i = 0; i < urls.length; i++ ) {
            $.ajax({
                url: urls[i],
                success: function(data,url) {
                    $(data).find("a:contains(.jpg)").each(function(url) {                               
                        new Image().src = url + $(this).attr("href");
                    });
                }
            });
        };  
    }, 1000);
};

你可以看到我(失败)试图将url传递到.each()调用-url最后取递增整数的值。不知道这些文件为什么或与之相关,也许是jpg文件的数量?

无论如何,它当然应该取我原来的URL数组中的单个值。

提问于
用户回答回答于

我刚刚经历了一个类似的问题,相信我找到了解决办法。

由于设置对象与该ajax调用相关联,因此你可以简单地将索引器作为自定义设置添加到其中,然后可以使用this在成功的回调中:

//preloader for images on gallery pages
window.onload = function() {
    var urls = ["./img/party/","./img/wedding/","./img/wedding/tree/"];

    setTimeout(function() {
        for ( var i = 0; i < urls.length; i++ ) {
            $.ajax({
                url: urls[i],
                indexValue: i,
                success: function(data) {
                    image_link(data , this.indexValue);

                    function image_link(data, i) {
                        $(data).find("a:contains(.jpg)").each(function(){ 
                            console.log(i);
                            new Image().src = urls[i] + $(this).attr("href");
                        });
                    }
                }
            });
        };  
    }, 1000);       
};

希望这能起作用。

用户回答回答于

你不能传递这样的参数-成功对象映射到一个带有一个参数的匿名函数,这就是接收到的数据。在for循环之外创建一个函数,该函数将(data, i)作为参数并在那里执行代码:

function image_link(data, i) {
   $(data).find("a:contains(.jpg)").each(function(){                                
       new Image().src = url[i] + $(this).attr("href");
   }
}
...
success: function(data){
    image_link(data, i)
}

扫码关注云+社区

领取腾讯云代金券