Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Ajax值输出到PHP变量?_Php_Javascript_Ajax - Fatal编程技术网

如何将Ajax值输出到PHP变量?

如何将Ajax值输出到PHP变量?,php,javascript,ajax,Php,Javascript,Ajax,问题: 有一个值1是通过Ajax函数addToAuthorizeform()计算得出的 有一个值2是PHP变量$amount。此变量应显示由Ajax函数计算的value1的输出 这怎么可能 到目前为止,我的代码是: //AJAX FUNCTION THAT OUTPUTS AN AMOUNT //SEE LINE 24 value="'+arrData[1]+'" <-- This is the correct value that needs to be //output on PHP

问题:

  • 有一个值1是通过Ajax函数
    addToAuthorizeform()
    计算得出的
  • 有一个值2是PHP变量
    $amount
    。此变量应显示由Ajax函数计算的
    value1
    的输出
  • 这怎么可能
  • 到目前为止,我的代码是:

    //AJAX FUNCTION THAT OUTPUTS AN AMOUNT 
    //SEE LINE 24 value="'+arrData[1]+'" <-- This is the correct value that needs to be //output on PHP VARIABLE
    
    <script>
        function addToAuthorizeForm() {
            $wbc('#slots_purchased').html('');
            var new_html = '';
            var i = 1;
            $wbc('#booking_slots').find('input').each(function () {
                if ($wbc(this).attr('checked')) {
                    var slot_id = $wbc(this).val();
                    //ajax request to get data
                    $wbc.ajax({
                        url: '<?php echo plugins_url('
                        my_plugin / public ');?>/ajax/getSlotInfo.php?slot_id=' + $wbc(this).val(),
                        success: function (data) {
    
                            arrData = data.split("$");
                            if (arrData[1] > 0) {
                                q = 1;
                                if ($wbc('#seats_' + slot_id).val() != undefined) {
                                    q = $wbc('#seats_' + slot_id).val();
                                }
                                new_html += '<input type="hidden" name="x_amount_' + i + '" value="' + arrData[1] + '" />';
                                $wbc('#slots_purchased').html(new_html);
                                i++;
                            }
                        }
                    });
    
                }
    
            });
    
        }
    </script>
    
    现在我需要知道在
    $amount=1
    之后应该放什么代码,这样我就可以调用或回显在Javascript函数第24行上计算的Ajax相同值
    '+arrData[1]+'

    这是我用来提交的Authorize.net HTML表单。

    <?php
    require_once 'anet_php_sdk/AuthorizeNet.php'; // Include the SDK you downloaded in Step 2
    $fname = $bookingReservationObj->getReservationName();
    $api_login_id = $bookingSettingObj->getAuthorizeAPI();
    $transaction_key =  $bookingSettingObj->getAuthorizeTXN();
    $amount = // I am not sure what to put here to call Ajax value that i need answer
    $fp_timestamp = time();
    $fp_sequence = "123" . time(); // Enter an invoice or other unique number.
    $fingerprint = AuthorizeNetSIM_Form::getFingerprint($api_login_id,
      $transaction_key, $amount, $fp_sequence, $fp_timestamp)
    ?>
    
        <!-- authorize.net form -->
        <form action='https://test.authorize.net/gateway/transact.dll' METHOD='POST' name="authorize_form" style="display:inline">
    
            <!-- Authorize Configuration -->
    
            <input type='hidden' name="x_login" value="<?php echo $api_login_id ?>" />
            <input type='hidden' name="x_fp_hash" value="<?php echo $fingerprint?>" />
            <input type='hidden' name="x_fp_timestamp" value="<?php echo $fp_timestamp?>" />
            <input type='hidden' name="x_fp_sequence" value="<?php echo $fp_sequence?>" />
            <input type='hidden' name="x_version" value="3.1">
            <input type='hidden' name="x_show_form" value="payment_form">
            <input type='hidden' name="x_test_request" value="true" />
            <input type='hidden' name="x_method" value="cc">
            <input type='hidden' name="x_first_name" value="<?php echo $fname ?>">
            <input type='hidden' name="x_last_name" value="<?php echo $fname ?>">
            <input type='hidden' name="x_email" value="<?php echo $fname ?>">
            <input type='hidden' name="x_phone" value="<?php echo $fname ?>">
            <input type='hidden' name="x_description" value="<?php echo 'Cruzz Booking '; ?>">
    
    
           <!--slots purchased-->
            <div id="slots_purchased">
    
            </div>
    
            <input type='hidden' name="x_receipt_link_method" value="link">
            <input type='hidden' name="x_receipt_link_text" value="Click here to return to our home page">
            <input type='hidden' name="x_receipt_link_URL" value="<?php echo site_url('')."/?p=".$post->ID."&authorize_confirm=1"; ?>">
            <input type="hidden" name=" x_cancel_url" value="<?php echo site_url('')."/?p=".$post->ID; ?>">
            <input type="hidden" name="rm" value="POST">
    
    
    
        </form>
    
    
    
    在代码中,
    $wbc
    必须是jQuery对象,它通常只是
    $
    。如果由于某种原因,
    $wbc
    没有引用jQuery对象,则会出现问题
    ajax
    是jQuery对象的一种方法。
    ajax
    方法将对象文本作为其参数。JavaScript对象文字实际上是一个关联数组
    url
    是作为参数传入的对象的属性。该属性的值是
    '/ajax/getSlotInfo.php?slot_id='+$wbc(this).val()
    ,必须通过服务器运行,因此这必须是
    .php
    文件。要使用
    plugins\u url()
    必须使用WordPress

    您使用的是
    $wbc.ajax({type:'GET'})
    方法,因此可以像
    'getSlotInfo.php?slot_id='+$wbc(this.val()+'&anotherProperty=anotherValue
    那样发送其他信息。因此,
    将属性分开

    查看您的代码在哪里显示
    getSlotInfo.php?slot\u id=
    slot\u id
    部分可以通过
    $\u GET['slot\u id']
    在您的
    url
    发送信息的页面上访问,该页面恰好是
    getSlotInfo.php
    。您可以在
    getSlotInfo.php
    页面上使用
    创建包含jQuery的php变量

    如果在
    ajax
    方法对象参数中有
    dataType:'json'
    ,比如
    $wbc.ajax({dataType:'json'})
    ,那么可以使用PHP生成JavaScript对象表示法,这是一个关联数组。在
    getSlotInfo.PHP
    页面上选择的PHP方法是
    json\u encode()
    。只要您使用PHP
    打印
    echo json_encode()
    ,当您成功响应时,
    $wbc.ajax({success:function(data){}}}}})
    参数将保存关联数组,该数组可与JavaScript的for-in-loop一起使用:

    for(var i in data){
      var property = i;
      var value = data[i];
    }
    
    getSlotInfo.PHP
    上发送到此JavaScript对象文本的PHP可能如下所示:

    <?php
      if(isset($_GET['slot_id']) && isset($_GET['anotherProperty'])){
        $ary = array('prop1' => $_GET['slot_id'], 'prop2' => $_GET['anotherProperty']);
        echo json_encode($ary);
      }
      else{
        header('LOCATION: urlOfChoice.html');
      }
    ?>
    
    
    
    使用这种方法,没有理由拆分
    数据,因为它不是字符串响应。相反,它已经是JSON了


    这可能有助于您理解
    post
    方法。

    当$amount中有空字符串时,您是如何得到任何东西的…您对$amount变量做了什么?我不知道在$amount之后写些什么,这样我就可以得到Ajax调用的值,这就是我为什么要问的原因,谢谢,但是如果页面已经加载,您不能分配变量,所以我的问题是…你想用那美元做什么variable@Kylek$amount变量是Authorize.net amount,这是必需的,因为Authorize.net使用此变量输出来计算指纹。我不确定如何执行此操作
    <?php
      if(isset($_GET['slot_id']) && isset($_GET['anotherProperty'])){
        $ary = array('prop1' => $_GET['slot_id'], 'prop2' => $_GET['anotherProperty']);
        echo json_encode($ary);
      }
      else{
        header('LOCATION: urlOfChoice.html');
      }
    ?>