0

我在 php 文件中有以下类:

function calcTotal(){
        var productID = <?php echo $product_info['products_id'];?>;
    var sizeID = 0; 

    $(".mine_sizes").each(function() {
          if ($(this).is(':checked'))  sizeID = $(this).val();                         
     });
    //alert(sizeID);
    var colorID = 0;

    $(".mine_color").each(function() {
          if ($(this).is(':checked'))  colorID = $(this).val();                        
     });

     $.ajax({
              type: "POST",
              url: 'get_product_price.php',
              data: "product_id="+ productID +"&color_id="+ colorID +"&size_id="+ sizeID,
              success: function( response ) {       
                    $("#price_container").html(response);
                    ;

              } 

     });

}

和 php 文件 get_product_price.php:

if($_POST){

     $product_info_query = tep_db_query("select products_price, products_tax_class_id from " . TABLE_PRODUCTS . "  where products_id = '" . (int)$_POST['product_id']."'");
     $pricePrice = tep_db_fetch_array($product_info_query);
     $productPrice = $pricePrice['products_price'];

    $sizesPrices = tep_db_query("select options_values_price from products_attributes   where products_id='".$_POST['product_id']."' and options_values_id='".$_POST['size_id']."'");
 //  echo "select options_values_price from products_attributes   where products_id='".$_POST['product_id']."' and options_values_id='".$_POST['size_id']."'";
  // exit;
    if(mysql_num_rows($sizesPrices)>0){
        $priceRow = tep_db_fetch_array($sizesPrices);
        $productPrice = $productPrice + $priceRow['options_values_price'];
    }

    $sizesPrices2 = tep_db_query("select price from product_attributes_color_relation   where product_id='".$_POST['product_id']."' and color_id='".$_POST['color_id']."' and color_size_option_id='".$_POST['size_id']."'");

    if(mysql_num_rows($sizesPrices2)>0){
        $priceRow2 = tep_db_fetch_array($sizesPrices2);
        $productPrice = $productPrice + $priceRow2['price'];
    }
    //echo $productPrice; exit;
    echo $currencies->display_price($productPrice, tep_get_tax_rate($product_info['products_tax_class_id']));
    //echo $productPrice;
}

该函数在单选按钮单击时调用并且当前正在工作,但我试图了解它是如何为自己工作的(并可能重新创建类似的函数)

我不太了解的是来自 ajax api 的数据参数。该数据参数如何使用?

我的另一个问题是成功参数。“响应”参数是标准还是可以称为任何参数?

感谢您向我解释这一点的任何帮助。我认为不需要任何其他信息,有一个类 id 为 #price_container 的 div 是价格回显的地方。

4

2 回答 2

1

data 参数以与 HTML 表单相同的方式传递信息。至少这是最容易想到的方法。因此,“数据”将以 $_POST 或 $_GET 数组的形式出现。我总是将我的数据设置为 JSON 格式:

data: { "product_id": productID,"color_id": colorID, "size_id": sizeID },

将您的类型设置为“POST”,这将通过:

$_POST['product_id']
$_POST['color_id']
$_POST['size_id']

您可以为响应指定任何变量名称 - 但“响应”很好且易于记忆和使用。:)

于 2012-06-19T18:42:25.810 回答
1

来自 ajax文档

data

[Object, String] 要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它附加到 GET 请求的 url。请参阅 processData 选项以防止此自动处理。对象必须是键/值对。如果 value 是一个数组,jQuery 会根据传统设置的值(如下所述)序列化具有相同键的多个值。

基本上,如果您将data变量设置为查询字符串,它会按原样将其发送到服务器,否则它将根据您设置的键值对生成查询字符串。一旦 php 服务器接收到查询字符串,它就会被解析,您可以使用 $_POST['key']

于 2012-06-19T18:49:48.183 回答