0

確かに、私は Ajax に関してはまったく無知ですが、私の仕事を達成するには Ajax が最善の方法のようです。いくつかのチュートリアルを行った後、私は基本的な理解を持っていますが、私の問題に関しては迷ったままです. 基本的に、HTML ドロップダウン メニューの値をキャプチャし、ユーザーが選択した行の値でショッピング カート関数を呼び出そうとしています。各行の値は、php 配列内の製品に対応しています。

ヘッダー ファイルに表示される関数 (注: コメント アウトされた部分は、onreadystatechange を使用して失敗した試みです):

<script type="text/javascript">

function productchange(data){

var xmlhttp;

if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  //xmlhttp.onreadystatechange=function()
  //{
  //if (xmlhttp.readyState==4 && xmlhttp.status==200)
  // {
  //document.getElementById("test").innerHTML=xmlhttp.responseText;
  //document.getElementById("test").innerHTML= data;
  //  }
  //}

  var URL = "http://www.example.com/wp-content/themes/themeX/order.php" + "?rownum=" + data;

  xmlhttp.open("GET",URL,false);
  xmlhttp.send(); 

}
//-->
</script>

HTML テーブル: (ここでも、div タグは innerHTML を使用して失敗しました。画面上で値を取得できましたが、関数呼び出しで使用するために $_GET でキャプチャすることはできませんでした)

<TR>
   <TD>
      <select id="productcategory1" name="productcategory1" onchange="productchange(this.value)">
    <option value="$">--Please Select--</option>
    <option value="1">Product # 1 - $1.99</option>
    <option value="2">Product # 2 - $1.99</option>
    <option value="3">Product # 3 - $9.99</option>
    <option value="4">Product # 4 - $9.99</option>
  </select>
  </TD>
  <TD>    
  <div id="test">
  </div>
  <?php echo print_wp_cart_button_for_product($products[$rownum]["Product"], $products[$rownum]["Price"]); ?>
  </TD>
  </TR>

Order.php:

<?php
global var $rownum;
$rownum = $_GET['rownum'];
?>
4

1 に答える 1

0

order.php実際には何もせず、クライアントに応答をエコーし​​ません。AJAX呼び出しは実際に何をすることになっていますか?(PHPスクリプトは最初のページがレンダリングされるときに1回実行されるため、AJAX呼び出しは完全に別個のWebリクエストであり、クライアントがonreadystatechange関数で処理するデータを返す必要があることを忘れないでください。エコーを追加してみてくださいJSハンドラーのコメントを解除するorder.phpと、divに表示されるはずです。

于 2012-12-28T05:21:33.487 に答える