将变量传递给jQuery AJAX成功回调函数

前端之家收集整理的这篇文章主要介绍了将变量传递给jQuery AJAX成功回调函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图预先加载一些图像与jQuery AJAX调用,但我有真正的问题传递(url)字符串到AJAX调用的成功函数(如果这是有意义的)的函数

这里是我的代码是:

//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 ends up取增加整数的值。不确定为什么或这些相关的,也许jpg文件数量

…反正,它当然应该在我原来的urls数组中的单一值。

感谢任何帮助 – 我总是似乎有点扭曲与这些回调。

PROGESS?

所以,我陷入了一点,注意来自@ron tornambe和@PiSquared的意见,目前在这里:

//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],success: function(data) {
                    image_link(data,i);
                    function image_link(data,i) {
                        $(data).find("a:contains(.jpg)").each(function(){ 
                            console.log(i);
                            new Image().src = urls[i] + $(this).attr("href");
                        });
                    }
                }
            });
        };  
    },1000);       
};

我试图把image_link(data,i)这里和无处不在(在每个嵌套函数等),但我得到相同的结果:i的值只记录为3.我怀疑这是因为所有引用i指向同一个事情,并且在异步任务实际到达image_link(data,i)时,for …循环结束并且完成(因此具有值3)。不用说,这给了urls [i]为“未定义”。

任何(更多)提示如何我可以绕过这?

解决方法

我只是经历了一个类似的问题,并相信我找到了一个解决方案。

由于设置对象绑定到ajax调用,您可以简单地将索引器添加自定义设置,然后您可以在success回调中使用此设置访问:

//preloader for images on gallery pages
window.onload = function() {
    var urls = ["./img/party/",indexValue: i,this.indexValue);

                    function image_link(data,1000);       
};

希望这做的伎俩。

猜你在找的jQuery相关文章