1

dianuj の多大な助けにより、昨日 Ajax ループの問題を解決しました。ここをクリック!_

このソリューションは、入力領域の数値を変更するたびに数量変数 (class="qty") を送信および取得するのに役立ちます。

ここで、Ajax と PHP のループを少し修正して、「合計」変数 (数量 * 価格) を取得したいと考えています。「非表示」の入力領域に価格値を入力して、「価格」変数を取得しようとしました (添付の次のスクリプトを参照してください)。スクリプトは、数量 (class="qty") と価格 (class=") の変数を取得します。価格」)問題ありません。

ただし、異なる数量を入力すると、スクリプトは最初の価格のみを選択し、変更された数量を乗算します。

たとえば、関数内に 3 つの異なる価格を持つ 3 つのアイテムがあります: 1. リンゴ $1 x1 2. オレンジ $10 x3 3. バナナ $2 x4

スクリプトの結果は、正しい $1*2+$10*3+$2*4 の代わりに $1 * (2+3+4) を表示します (ajax スクリプトは価格と数量の変数を問題なく取得します)。

私のAjaxとPHPのループは次のとおりです.qtyとpriceの変数を問題なく取得して送信できるようです(ただし、最初のアイテムの固定価格のみ):

<script language="JavaScript">
$(document).ready(function() {
       $("form").mouseleave( function() {

 //get qty value and price value from the loop

var totalVal =0;
$( ".qty" ).each(function() {
  totalVal += ($(this).val()*$(".price").val()); 
});      

      // get 
        $.ajax({
        type: 'GET',
        url:  'getSunBody.php',
        data: { 
              //sent the total variable to php script (xml)
              total : totalVal,
                 }, 
        success: function(data) {
           // get XML value
           $('#result').html($(data).find('total').text()); 
           $('#result1').html($(data).find('caution').text());   

        } 
      });    
      return false;
   });

   });
</script> 
</head>

<body>
<div id="display">
<form action="sessionCartUpdate.php">
<table width="780" border="0" align="center" cellpadding="4" cellspacing="0">
<?php
foreach( $_SESSION["psn"] as $i => $data ){
?>

<input type="hidden" name="psn" value="<?php echo $_SESSION["psn"][$i];?>">
<tr>
  <td bgcolor="#CCCCCC" font color="black"><?php echo $_SESSION["psn"][$i];?></td>
  <td bgcolor="#CCCCCC"><?php echo $_SESSION["pname"][$i];?></td>
  <td bgcolor="#CCCCCC"><?php echo $_SESSION["price"][$i];?></td>
  <td bgcolor="#CCCCCC"><input type="text" class="qty" name="qty[]" value="<?php echo $_SESSION["qty"][$i];?>"></td>

    <input type="hidden" class="price" value="<?php echo $_SESSION["price"][$i];?>" >

  <td bgcolor="#CCCCCC"><input type="submit" name="btnUpdate" value="update" />
      <input type="submit" name="btnDelete" value="delete" />
      </td>
</tr><br />

<?php
}
?>
<tr><td colspan="5" align="center">the total:<div id="result" class="box" style="height=350px;"></div><div id="result1" class="box" style="height=350px;"></div>
<div id="result2" class="box" style="height=350px;"></div></td></tr>
</table>
</form>

上記の ajax スクリプトの xml として機能する次のような php スクリプトも含めます。

<?php
// XML
header("Content-Type: text/xml");
header("Content-Type:text/html; charset=utf-8");

//get total value ("qty * price") from the ajax

$total = (isset($_POST["total"]) ) ? $_POST["total"] : $_GET["total"];

echo "<?xml version=\"1.0\" ?>";

echo "<caculation>"; 

echo "<total>" . $total . "</total>";


if ($total==0)
    echo "<caution>"."please put number!"."</caution>";
    else if ($total<=500)
    echo "<caution>"."You should buy more!"."</caution>";
    echo "";

echo "</caculation>";

?> 

上記のバグを修正するのに役立つ貴重なアドバイスを提供できることを非常に感謝しています!

4

2 に答える 2