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

ajaxのドキュメントから

data

[オブジェクト、文字列] サーバーに送信されるデータ。まだ文字列でない場合は、クエリ文字列に変換されます。GET リクエストの URL に追加されます。この自動処理を防ぐには、processData オプションを参照してください。オブジェクトはキーと値のペアである必要があります。value が配列の場合、jQuery は従来の設定 (以下で説明) の値に基づいて、同じキーで複数の値をシリアル化します。

基本的に、data変数をクエリ文字列に設定すると、そのままサーバーに送信されます。それ以外の場合は、設定したキーと値のペアからクエリ文字列が生成されます。PHPサーバーがクエリ文字列を受信すると、それが解析され、次を使用して値にアクセスできます $_POST['key']

于 2012-06-19T18:49:48.183 に答える
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']

応答には任意の変数名を指定できますが、'response' は覚えやすく操作しやすい便利な名前です。:)

于 2012-06-19T18:42:25.810 に答える