将变量传递给php

时间:2014-05-10 05:59:27

标签: javascript php jquery woocommerce

我想将计算器结果传递给php文件,结果会改变产品数量。

我想将起始值设置为计算器页面的结果。 我在计算器页面上有一个按钮,点击按钮后,页面将进入产品页面并将计算结果传递给产品数量。

我不知道如何将它传递给这个php文件。

这是我的HTML

     <div>Total: <span id="finaltotalresult">6.864</span>metric tons</div>

    <form method="post"  action="http://carboncreditcapital.com/offset">
    <input type="hidden" name="finalresult">
    <input type="submit" value="Offset Now" id="offset" >
    </form>

的javascript:

        $("#offset").on('click',function(){
            var text =$("#finaltotalresult").text();
            var val = Math.round(parseFloat(text));
            $.post('/dev/wp-content/themes/responsive-child/functions.php',{val: val}, function(){

                });
        });

这是php:

   $val= $_POST['val'];

     add_filter( 'woocommerce_quantity_input_args', 'jk_woocommerce_quantity_input_args', 10, 2 );
      function jk_woocommerce_quantity_input_args( $args, $product ) {

         $args['input_value']   = $val; // Starting value
         $args['max_value']     = 80;   // Maximum value
          $args['min_value']    = 1;    // Minimum value
          $args['step']         = 1;    // Quantity steps
          return $args;
    }

3 个答案:

答案 0 :(得分:0)

您应该将隐藏字段的值设置为与其中的内容相同

<input type="hidden" name="finalresult" value="setValueHereUsingBelowJS">

<script>
$('input[name=finalresult]').val(
$('#finaltotalresult').html()
);
</script>

要在服务器上访问,请使用$_POST['finalresult'];

答案 1 :(得分:0)

我认为你最有可能是$val变量的范围问题。当你在函数

之外阅读它时
$val = $_POST[ 'val' ];

但你在函数中使用它而没有导入它,它在那里不可用。

所以你可能需要做的事情(其余代码看起来不太错,但很难说,因为我无法用你的示例代码重现)是在那里导入那个变量。一个简单的方法代码是使用闭包:

$val = $_POST[ 'val' ];

add_filter( 'woocommerce_quantity_input_args', 
    function ( $args, $product ) use ( $val ) 
    {
         $args[ 'input_value' ] = $val; // Starting value
         $args[ 'max_value'   ] = 80;   // Maximum value
         $args[ 'min_value'   ] = 1;    // Minimum value
         $args[ 'step'        ] = 1;    // Quantity steps

         return $args;
    }, 10, 2 );

另一种选择是在过滤器功能中使用超全局。

答案 2 :(得分:-1)

您可以尝试使用隐藏的输入:

<input type="hidden" name="result" value="123">

在接收php上阅读它:

$result = $_POST['result'];