使用JQuery将变量值输出到innerHTML,然后将其存储在PHP变量中

时间:2012-12-31 02:54:10

标签: php jquery

基本上,我试图捕获HTML下拉菜单的值,并使用用户选择的行调用php函数(即print_wp_cart_button_for_product)。我创建了一个名为onchange的JQuery函数,但遇到了几个问题。通过使用警报,我确信该函数被调用,并且该值存储在currentrow中。另外,通过使用firefox Web控制台,我知道使用适当的参数调用order.php。最初我使用ajax成功方法,但函数没有被调用,所以我把它切换到完整的方法,这至少解决了第一个问题。我正在处理的第二个问题涉及将变量currentrow存储在test的innerHTML中。当我将$('#test')。html(currentrow)更改为$('#test')。html(“完成”)字符串输出到屏幕,正如我所料,但我一直无法使用currentrow的值动态地执行此操作。我发现的最后一个问题涉及将test 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";
?>

2 个答案:

答案 0 :(得分:0)

您的<div id="test"></div>似乎应该<input type="hidden" id="test" name="test"/>

<form>

使用某种表单元素是您可以在提交时将值本机传递回服务器的唯一方法。

在任何情况下,HTML之后的内联PHP代码只能在提交表单后才能使用。

答案 1 :(得分: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;

我希望能帮到你。如果您需要任何其他帮助,或者我误解了某些内容,请告诉我,我很乐意为您提供帮助。