首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个AJAX调用并在完成时显示div

多个AJAX调用并在完成时显示div
EN

Stack Overflow用户
提问于 2017-05-11 20:03:06
回答 1查看 47关注 0票数 0

我有一个JS脚本做多个AJAX请求。首先,我按ID请求一个产品,然后我请求此产品的每一个变体。我不能做任何形式的后端编码,因为我工作的环境是封闭的。

我的请求运行良好,但现在我将每个变量都附加到一个div中,而我的客户并不真正喜欢这样,所以我在想,是否可以将所有数据加载到一个变量中,然后在最后淡入所有变量的父div?

我的脚本如下所示:

代码语言:javascript
运行
复制
var variants = $('.single_product-variant-images');

$.ajax({
    url: productMasterURL,
    success: function (data) {
        $(data).find('Combinations Combination').each(function () {
            var variantID = $(this).attr('ProductNumber');

                $.ajax({
                    url: "/api.asp?id=" + escape(variantID),
                    dataType: "json",
                    async: true,
                    cache: true,
                    success: function (data) {
                        variants.append('<div class="variant"><a href="' + data.url + '" title="Vis variant"><img src="' + data.pictureLink + '" alt=""/></a></div>');                                                  
                        variants.find('.variant').fadeIn(300);
                }
            });

        });
    }
});
EN

回答 1

Stack Overflow用户

发布于 2017-05-11 20:42:53

一些快速和肮脏的解决方案,但解决方案的思想和概念是清晰的。这是一个糟糕的解决方案,但适用于您无法访问后端代码的情况。

代码语言:javascript
运行
复制
var all_load_interval;
var is_all_data_ready = false;

var all_data_count = 0;

var variants = $('.single_product-variant-images');

$.ajax({
    url: productMasterURL,
    success: function (data) {
        var data_count = $(data).find('Combinations Combination').length;
        $(data).find('Combinations Combination').each(function () {
            var variantID = $(this).attr('ProductNumber');
            $.ajax({
                url: "/api.asp?id=" + escape(variantID),
                dataType: "json",
                async: true,
                cache: true,
                success: function (data) {
                    // make div with class variant hidden
                    variants.append('<div class="variant"><a href="' + data.url + '" title="Vis variant"><img src="' + data.pictureLink + '" alt=""/></a></div>');   
                    // count every variant
                    all_data_count += 1 
                    if (all_data_count == data_count) {
                       // when all data got and created, lets trigger our interval - all_load_interval
                       is_all_data_ready = true; 
                    }                                          
                }
            });
        });
    }

    all_load_interval = setInterval(function() {
      // Check does all data load every second
      if (is_all_data_ready) {
        // show all div.variant
        variants.find('.variant').fadeIn(300);
        clearInterval(all_load_interval);
      }
    }, 1000);
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43914880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档