我创建了一个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一种可行的方式进行跟踪。为此,您可以使用contextajax选项:
currentSelect
context
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); } }); }