0

基本的に、HTML ドロップダウン メニューの値をキャプチャし、ユーザーが選択した行で php 関数 (つまり、print_wp_cart_button_for_product) を呼び出そうとしています。onchange と呼ばれる JQuery 関数を作成しましたが、いくつかの問題が発生しました。アラートを使用することで、確実に関数が呼び出され、値が currentrow に格納されます。さらに、Firefox Web コンソールを使用することで、order.php が適切なパラメーターで呼び出されることがわかります。もともと ajax サクセス メソッドを使用していましたが、関数が呼び出されていなかったので、完全なメソッドに切り替えました。これにより、少なくとも最初の問題は解決されました。私が扱っている 2 番目の問題は、変数 currentrow を test の innerHTML に格納することです。$('#test').html(currentrow) を $('#test').html("Complete" に変更したとき )文字列は予想どおり画面に出力されましたが、現在の行の値で動的に出力することができませんでした。私が見つけた最後の問題は、テスト div タグの値を php 変数に保存することです。$_GET を使用して値を取得し、続いて PHP 関数を呼び出そうとしましたが、うまくいきませんでした。

  <div id="test">
  </div>

  <script type = "text/javascript">
  function productchange() 
  {
      var currentrow = $('#productcategory1').val();
      //alert(currentrow);

      $.ajax({
        type: "GET",
        url: "http://www.example.com/wp-content/themes/themeX/order.php",
        data: {'rownum': currentrow},
        complete: function(currentrow){
            //alert('COMPLETE');
            $('#test').html(currentrow);
            //$('#test').html("Complete");
            }});      
      return false;
  }
  </script>

 <?php $rownum = $_GET['test']; ?>
 <?php echo print_wp_cart_button_for_product($products[$rownum]["Product"], $products[$rownum]["Price"]); ?>

Order.php

<?php
$rownum= $_GET['rownum'];
echo "Row number = $rownum";
?>
4

2 に答える 2

0

あなた<div id="test"></div>は本当に<input type="hidden" id="test" name="test"/>内にいるべきだと思われます<form>

なんらかのフォーム要素を使用することが、送信時にネイティブに値をサーバーに返す唯一の方法です。

いずれにせよ、HTML の後のインライン PHP コードは、フォームの送信後にのみ機能します。

于 2012-12-31T04:24:35.617 に答える
0

非表示のフォーム フィールドを PHP ページに送信して、値を PHP 変数に格納できるようにするコードのスニペットを次に示します。まず、JavaScript を含むメイン ページで次のような操作を行います。

<form method="post" action="storevar.php">
    <input type="hidden" name="jsvar" id="jsvar" value="" />
</form>

次に、変数の値を JavaScript で計算した後、次のように、この非表示のフォーム フィールドの値を Javascript/JQuery で更新します。

function productchange() {
  var currentrow = $('#productcategory1').val();
  $("#jsvar").val(currentrow);

   $.post('storevar.php', {jsvar: currentrow}, function(data) {
             // do any additional coding with the result if need be  
         }

    });  

  return false;
}

次に、storevar.php で次のようなことを行うことができます。必要に応じて他のページでも取得できるように、セッションに保存していることに注意してください。

session_start();
$currentrow = $_POST['jsvar'];
$_SESSION['currentrow'] = $currentrow;

お役に立てば幸いです。さらにサポートが必要な場合、または何か誤解している場合はお知らせください。喜んでお手伝いさせていただきます。

于 2012-12-31T05:12:18.370 に答える