1

問題の中心にあるのは、HTML ドロップダウン メニューの値を使用して、ページ全体をリロードせずに php 関数を呼び出そうとしています。PHP はサーバー側の言語であるため、ページの一部のみをリロードすることを期待して、onChange イベントを処理するために JQuery を組み込みました。呼び出したい PHP 関数 (つまり、wp_cart-button_for_product) は、カートに追加ボタンを出力しますが、カートに追加ボタンに関連付けられた変数は、最終的にドロップダウン メニューに依存します。リロードしたい div タグ (つまり、ボタン リロード) は現在のページにありますが、製品によって URL が異なります。load メソッドと html メソッドを試しましたが、うまくいきませんでした。

<script type = "text/javascript">
  function productchange() 
  {
      var currentrow = $('#productcategory1').val();
      $("#jsvar").val(currentrow);
      $.ajax({
        type: "GET",
        url: "http://www.example.com/wp-content/themes/themeX/storevar.php",
        data: {'jsvar': currentrow},
        complete: function(){
              $('#button-reload').load("http://www.example.com/wp-content/themes/themeX/printbutton.php #button-reload > *");
      //      $('#button-reload').html($('#button-reload',data).html);
      //      $('#button-reload').load(location.href "#button-reload > *");
            }});      
      return false;
  }
  </script>

<div id = "button-reload">
      <?php echo print_wp_cart_button_for_product($products[$_SESSION['currentrow']]["Product"], $products[$_SESSION['currentrow']]["Price"]); ?>
  </div>

  <form method="get" action="http://www.example.com/wp-content/themes/themeX/storevar.php">
      <input type="hidden" name="jsvar" id="jsvar" value="" />
  </form>

Storevar.php

<?php
    session_start();
    $currentrow = $_GET['jsvar'];
    echo "Current Row = $currentrow";
    $_SESSION['currentrow'] = $currentrow;
    echo "Session Currentrow =".$_SESSION['currentrow'];
?>

Printbutton.php

<div id="button-reload">
    <?php echo print_wp_cart_button_for_product($products[$_SESSION['currentrow']]["Product"], $products[$_SESSION['currentrow']]["Price"]); ?>
</div>
4

2 に答える 2

0
function productchange() 
{
var currentrow = $('#productcategory1').val();
$('#button-reload').load("http://www.example.com/wp-content/themes/themeX/printbutton.php", {jsvar: currentrow});
}

十分なはずです。

ajax リクエストを実行してから、成功のコールバック内で load を呼び出していました。jquery のドキュメントhttp://api.jquery.com/load/を確認してください。

編集「session_start();」がありません あなたのprintbutton.phpで。そこにストレージ コードを追加することもできるので、必要な ajax 呼び出しは 1 つだけです。

Printbutton.php

<?php
    session_start();
    $currentrow = $_GET['jsvar'];
    echo "Current Row = $currentrow";
    $_SESSION['currentrow'] = $currentrow;
?>
<div id="button-reload">
    <?php echo print_wp_cart_button_for_product($products[$_SESSION['currentrow']]["Product"], $products[$_SESSION['currentrow']]["Price"]); ?>
</div>
于 2013-01-02T19:04:05.863 に答える
0

何時間もの実験の後:

 <script type = "text/javascript">
 function productchange() 
  {
      var currentrow = $('#productcategory1').val();
      alert(currentrow);
      $("#jsvar").val(currentrow);
      $.ajax({
         type: "GET",
         url: "http://example.com/wp-content/themes/themeX/storevar.php",
         data: {'jsvar': currentrow},
         success: function(response){
              alert(response);
              var pathname = window.location.href;
              alert(pathname);
              $('#button-reload').load(pathname + " #button-reload", function(responseTxt, statusTxt, xhr){
              if(statusTxt=="success")
                alert("Content loaded successfully!");
                if(statusTxt=="error")
                  alert("Error: "+xhr.status+": "+xhr.statusTxt);
                  });
  return false;
  }
  </script>
于 2013-01-03T07:44:49.197 に答える