2

シンプルな ajax (jquery バージョン) スクリプトと非常に短い php 関数があり、問題なく正常に動作します。フォーム入力から値を送信すると、ajax が動作し、php スクリプトから結果を送信して取得します。この場合、本の注文の合計金額を取得します。Ajax スクリプトと html セクションは次のとおりです。

     <script language="JavaScript">
   $(document).ready(function() {
   $("form").mouseout( function() {
      // get field value

      var qtyVal = $('#qty').val();
      // use HTTP GET get ajax 
        $.ajax({
        type: 'GET',
        url:  'getSunBody.php',
        data: { qty : qtyVal,
                 }, 
        success: function(data) {
           //get xml value
                    $('#result').html($(data).find('qty').text()); 
           $('#result1').html($(data).find('caution').text());   

        } 
      });    
      return false;
   });
});
</script>


<body>
Total price:<div id="result" class="box" style="height=350px;"></div><div id="result1" class="box" style="height=350px;"></div>
<form>
  <p>
    <label>quantity: </label>
    <input type="text" id="qty" name="qty"/> 
    <br/>
       <input type="submit" value="submit">
    total price:</p>
  <p>&nbsp;</p>
</form>

また、xml として機能する次の php スクリプトも、上記の ajax リクエストで正常に動作します。

<?php
// XML document
header("Content-Type: text/xml");
header("Content-Type:text/html; charset=utf-8");
// get field values
$qty = (isset($_POST["qty"]) ) ? $_POST["qty"] : $_GET["qty"];

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

echo "<datetime>"; 
echo "<qty>" . $qty*100 . "</qty>";

$total=$qty*100;
if ($total==0)
    echo "<caution>"."please input number!"."</caution>";
    else if ($total<=500)
    echo "<caution>"."you shoud buy more!"."</caution>";
    echo "";

echo "</datetime>";

?>

ただし、上記のスクリプトをショッピング カートの foreach ループと組み合わせると機能せず、ajax スクリプトはフォーム入力領域から変数を取得できませんでした。変数のスコープの問題 (グローバルまたはローカル) かどうかわかりませんか? それとも何か?

以下は、修正したいスクリプト全体です。

<script language="JavaScript">
$(document).ready(function() {
   $("form").mouseout( function() {
      // get value from the form

      var qtyVal = $('#qty').val();
      // get 
        $.ajax({
        type: 'GET',
        url:  'getSunBody.php',
        data: { qty : qtyVal,
                 }, 
        success: function(data) {
           // get XML value
           $('#result').html($(data).find('qty').text()); 
           $('#result1').html($(data).find('caution').text());   

        } 
      });    
      return false;
   });
});
</script>
</head>

<body>
<table border="1" align="center">
<tr>
  <th>no</th>
  <th>name</th>
  <th>price</th>
  <th>qty</th>
  <th>update</th>
</tr>
<?php
foreach( $_SESSION["psn"] as $i => $data ){
?>
<form action="sessionCartUpdate.php">
<input type="hidden" name="psn" value="<?php echo $_SESSION["psn"][$i];?>">
<tr>
  <td><?php echo $_SESSION["psn"][$i];?></td>
  <td><?php echo $_SESSION["pname"][$i];?></td>
  <td><?php echo $_SESSION["price"][$i];?></td>
  <td><input type="text" id="qty" name="qty" value="<?php echo $_SESSION["qty"][$i];?>"></td>
  <input type="submit" name="qty" 
  <td><input type="submit" name="btnUpdate" value="update" />
      <input type="submit" name="btnDelete" value="delete" />
      </td>
</tr>
</form>
<?php
}
?>
<tr><td colsan="5">total amount:<div id="result" class="box" style="height=350px;"></div><div id="result1" class="box" style="height=350px;"></div></td></td>
</table>
<p><a href="sessionProdList.php">continue to shop</a>
<p><a href="sessionCartToDb.php">Put your order</a>
</body>
</html>

誰かが親切な、または可能な提案やアドバイスを提供できれば、とても感謝していますか? 私の目標は、ajax を使用して合計金額を取得し、結果を div ボックス (id="result " または "result1")。

4

2 に答える 2