0

我的 Virtuemart 商店有一个产品视图,其中包含产品列表。这些产品由 foreach 循环生成。以下是产品列表在 PHP 代码中的外观示例:

<div id="products">
<?php //Loop START
$counter = 0;
foreach ( $this->products as $product ) { 
$ProductName = $product->product_name;
$ProductID = $product->virtuemart_product_id;
$ProductSalesPrice = $product->prices['salesPrice'];
$ProductDiscount = $product->prices['discountAmount']; ?>
<div class="product">
<div class="nameHeader <?php echo $counter ?>"><?php echo $ProductName ?></div>
<div class="productID <?php echo $counter ?>"><?php echo $ProductID ?></div>
<div ID="salesprice<?php echo $counter ?>" class="salesprice <?php echo $counter ?>"><?php echo $ProductSalesPrice ?></div>
<div ID="discount<?php echo $counter ?>" class="discount <?php echo $counter ?>"><?php echo $ProductDiscount ?></div>
</div>
<?php $counter++; } //Loop END ?>
</div>

我正在寻找一种使用 ajax 而不是“静态”PHP 代码来显示价格数据的方法,这样价格就不会被 Joomla 组件“JotCache”缓存。

我知道如何通过使用 ajax 并将产品 ID 作为 POST 数据发送到 PHP 脚本来对单个产品执行此操作,但我不知道如何在上面示例的整个产品循环中执行此操作。

有谁知道如何:

  1. 将循环中产品的所有产品 ID 作为 POST 数据发送到外部 PHP 脚本。
  2. 从 PHP 脚本中检索所有计算的价格数据(基于产品 ID 的销售价格和折扣),并使用 ID 填充每个产品的销售价格和折扣,例如“salesprice0”和“discount0”、“salesprice1”和“折扣1”..等等?
4

2 回答 2

1

将产品 ID 保留为字符串,用逗号 (,) 分隔,如 (123,456,789) 并将其发送到您的 ajax 页面。

在 ajax 页面上,使用 PHP 函数 explode 转换为数组并获取产品价格。

并将所有产品价格保存为一个字符串,例如 (123:20:15,456:40:30,789:50:35)

使用以逗号(,)分隔的javascript函数,以便单个产品ID和价格将转换为数组。 Array(

[0]=>123:20:15,
[1]=>456:40:30,
[2]=>789:50:35

) 现在再次通过 (:) 对每个数组值执行相同的 javascript 拆分函数,然后数组将创建为

Array(
[0]=>123,
[1]=>20,
[2]=>15
)

希望它会有所帮助

于 2013-06-04T10:40:29.873 回答
0

这是使这一切发生的jQuery:

    jQuery.ajax({
        type: "POST",
        data: {productIDs:relatedproductsdata.products},
        url: "/CustomCodes/js/VM/related-creator2.php",
        success: function(data){
            jQuery('.ajaxpris').css('display','none');
            jQuery(document).ready(function() {

             jQuery('.ajaxpris').fadeIn(800);   
             var resultsTest = data.split("|");
             i=0;
             jQuery.each(resultsTest, function(idx, value){       
             var resultsTest2 = value.split(":");
             ii=0
             jQuery.each(resultsTest2, function(idx, value1){           
             var resultsValue = value1;
             if (ii==0) {
             var elements1 = "#donotexist"+i;
             }
             else if (ii==1) {
             var elements1 = "#productsalesprice"+i;
             }
             else if (ii==2) {
             var elements1 = "#productdiscount"+i;
             var elements2 = "#productdiscounthaeddiv"+i;
                if (value1!=="0%") {
                jQuery(elements2).css('visibility','visible').hide().fadeIn(800);
                }
             }
             var newdiv = jQuery('<span>',{class:'pricesajax', text:value1});
             jQuery(elements1).append( newdiv  );
             ii++
             });              
         i++    
         });      
       });
    }
}); 
于 2013-06-04T16:14:09.993 回答