問題の中心にあるのは、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>