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

时间:2013-06-13 01:34:23

标签: php javascript ajax

问题:

  1. 根据Ajax函数addToAuthorizeform();
  2. 计算出Value1
  3. Value2是PHP varibale $amount。此变量应显示由Ajax函数计算的value1的输出。
  4. 怎么可能?
  5. 到目前为止我的代码:

    //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>
    

    现在PHP变量

    $amount = '';
    

    现在我需要知道在$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>
    

    我该如何开始?

1 个答案:

答案 0 :(得分:0)

在您的代码中$wbc必须是您的jQuery对象,通常只是$。如果由于某种原因$wbc没有引用jQuery对象,则表示您遇到了问题。 ajax是jQuery对象的一种方法。 ajax方法将Object Literal作为其参数。 JavaScript Object Literal实际上是一个关联数组。 url是您作为参数传入的Object的属性。该属性的值为'<?php echo plugins_url('my_plugin/public');?>/ajax/getSlotInfo.php?slot_id='+ $wbc(this).val(),您必须通过服务器运行该属性,因此该文件必须是.php文件。要使用plugins_url(),您必须使用WordPress。

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

查看代码所在的位置getSlotInfo.php?slot_id=?您slot_id正在向$_GET['slot_id']发送信息的页面上url可以访问getSlotInfo.php部分。您可以在<?php $varHere = $_GET['slot_id'] ?>页面上使用getSlotInfo.php来创建一个包含jQuery的PHP变量。

如果dataType: 'json'方法对象参数中有ajax,如$wbc.ajax({dataType: 'json'}),则可以使用PHP生成JavaScript对象表示法,这是一个关联数组。在getSlotInfo.php页面上为此选择的PHP方法将为json_encode()。只要你使用PHP printecho json_encode(),当你有一个成功的响应时,data的{​​{1}}参数将包含关联数组,它可以与JavaScript一起使用在循环中像:

$wbc.ajax({success: function(data){}})

发送到此JavaScript Object Literal的for(var i in data){ var property = i; var value = data[i]; } 上的PHP可能如下所示:

getSlotInfo.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'); } ?> split,因为它不是字符串响应。相反,它已经data

这可能有助于您了解JSON方法Jquery AJAX post to PHP