【发布时间】:2013-02-13 14:43:58
【问题描述】:
我正在尝试为一系列 ' 中的每一个进行 ajax 调用,并将 td 的内部 html 替换为来自 ajax 调用的已处理数据。
由于我被锁定到电子商务 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:
<table><tr>
<td> label </td>
<td class="pricetag" group="<!--@Ecom:Group.ID-->"> price </td>
</tr></table>
: 从电子商务系统中获取一个 id。
【问题讨论】:
-
我不会为每个 td 发出多个 ajax 请求,这似乎很昂贵。我会打一个电话并返回数据,然后根据这些数据创建一个新表。