使用jquery ajax调用填充

我正在尝试为一系列的每一个做一个ajax调用,并用来自ajax调用的已处理数据替换td的内部html。

当我被锁定到电子商务cms系统时,我的ajax调用是一个包含以下字符串的完整页面:**!#249,00!#349,00 **!#5 ltr!#**

下面的代码将其拆分为:
var pprices = [”,’249,00’,’349,00′];
var plabels = [”,’5 ltr’,”];

注意:pprices中的数字使用逗号而不是句号。

问题是最后一行:$(this).html(endprice); 使用默认值’999999’填充单元格而不是新值。 似乎该行在ajax调用完成之前执行。

如何确保将for循环中找到的数据发送到td?

我目前的代码是这样的:

$(".pricetag").each( function() { var pgroup = $(this).attr('group'); var plink = "Default.aspx?ID=14&groupid=" + pgroup + "&mode=-1"; var endprice = "999999"; var endlabel = ""; $.ajax({url:plink,done:function(result){ pprices = result.split("**")[1]; plabels = result.split("**")[2]; prices = pprices.split("!#"); labels = plabels.split("!#"); for(i=0;i<prices.length;i++) { j=parseInt(prices[i]); k=parseInt(endprice); if(j!=0 && j<k) { endprice = prices[i]; endlabel = labels[i]; }} }}); $(this).html(endprice); }); 

HTML:

  <td class="pricetag" group=""> price 
label

:从电子商务系统中获取ID。

看看jQuery.ajax文档,它看起来并不像我done:是一个有效的设置。 我想你想要success:使用success:或者从$ .ajax()返回的jqXHR对象上调用done()。

也就是说,你认为’在ajax调用完成之前执行该行’是正确的……你需要将该行移动到成功处理函数中,例如:

 $.ajax({url:plink, context: $(this), success:function(result){ pprices = result.split("**")[1]; plabels = result.split("**")[2]; prices = pprices.split("!#"); labels = plabels.split("!#"); for(i=0;i 

请注意,我添加了上下文设置,以便从each()传入this ,以便成功函数正确使用this

我没试过这个。 但我相信它应该有效。 如果遇到问题,您可能需要检查jQuery.ajax()文档。