首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Ajax值输出到PHP变量?

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

Stack Overflow用户
提问于 2013-06-13 01:34:22
回答 1查看 1.1K关注 0票数 0

问题:

  1. 有一个由Ajax函数addToAuthorizeform()计算的addToAuthorizeform()
  2. 有一个Value2是PHP $amount。这个变量应该显示由Ajax函数计算的value1的输出。
  3. 怎么可能呢?

到目前为止我的代码是:

代码语言:javascript
复制
//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变量是

代码语言:javascript
复制
$amount = '';

现在,我需要知道在$amount = 1之后应该放什么代码,这样我就可以调用或回显在Javascript函数第24行上计算出来的Ajax值'+arrData[1]+'

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

代码语言:javascript
复制
<?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>

我该怎么开始?

EN

回答 1

Stack Overflow用户

发布于 2013-06-13 02:57:01

在您的代码中,$wbc必须是您的jQuery对象,它通常只是$。如果由于某种原因,$wbc没有引用jQuery对象,则会出现问题。ajax是jQuery对象的一种方法。ajax方法以一个对象文本作为其参数。JavaScript对象文本实际上是一个关联数组。url是作为参数传入的对象的属性。该属性的值是'<?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部件可以在url发送信息的页面上使用$_GET['slot_id']访问,该页面恰好是getSlotInfo.php。您可以在<?php $varHere = $_GET['slot_id'] ?>页面上使用getSlotInfo.php创建一个包含jQuery的PHP变量。

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

代码语言:javascript
复制
for(var i in data){
  var property = i;
  var value = data[i];
}

getSlotInfo.php上,发送到此JavaScript对象文字的PHP可能如下所示:

代码语言:javascript
复制
<?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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17077953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档