微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-在进行所有调用之前,For循环中的Ajax调用,For循环完成

我创建了一个for循环,该循环循环了元素出现在容器中的次数. for循环从HTML获取一些数据,并创建一个JSON url,然后将返回一个值.然后应将该值添加到HTML的适当位置.

问题似乎是for循环在进行所有Ajax调用之前完成,因此仅将最后一个添加到HTML.我以为可以确保readystate等于4,但是该解决方案不起作用.我还尝试将完整而不是成功用作Ajax事件.有什么见解吗?这是我的代码.

for(var index = 0; index < $('#wizSteps #step6 label').length; index++){
    var priceCount;
    console.log(index);
    var currentSelect = $('#wizSteps #step6 label[data-pricepos="'+index+'"]');
    url = 'http://www.thesite.com/api/search.json?taxonomy=cat3435' + currentSelect.find('input').attr('name');
    jQuery.ajax({
        url: url,
        dataType: "JSON",
        success: function( data ){
            var totalResult = data.totalNumberOfResults;
            console.log(currentSelect);
            currentSelect.find('.itemCount').text(totalResult);

        }     
    });
}

解决方法:

看起来您不一定需要按顺序完成请求,您只需要以一种可行的方式跟踪currentSelect.为此,您可以使用context ajax选项:

for (var index = 0; index < $('#wizSteps #step6 label').length; index++) {
    var currentSelect = $('#wizSteps #step6 label[data-pricepos="' + index + '"]');
    url = 'http://www.thesite.com/api/search.json?taxonomy=cat3435' + currentSelect.find('input').attr('name');
    jQuery.ajax({
        url: url,
        dataType: "JSON",
        context: currentSelect,
        success: function (data) {
            var totalResult = data.totalNumberOfResults;
            this.find('.itemCount').text(totalResult);

        }
    });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐