0

問題 :

  1. Ajax Function から計算される Value1 がありaddToAuthorizeform()ます。
  2. PHP 変数である Value2 があります$amount。この変数はvalue1、Ajax Function によって計算された の出力を表示する必要があります。
  3. それはどのように可能ですか?

これまでの私のコード:

//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 = '';

次に、Javascript 関数の 24 行目で計算される$amount = 1Ajax と同じ値を呼び出すかエコーするために、どのコードを後に配置する必要があるかを知る必要があります。'+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>

どのように始めればよいですか?

4

1 に答える 1

0

コード$wbcでは jQuery オブジェクトでなければなりません。通常は$. 何らかの理由$wbcで jQuery オブジェクトを参照していない場合は、問題があります。ajaxjQuery オブジェクトのメソッドです。この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パーツには、情報を送信$_GET['slot_id']しているページ (urlたまたま ) でアクセスできますgetSlotInfo.php。ページで を使用<?php $varHere = $_GET['slot_id'] ?>して、getSlotInfo.phpjQuery を保持する PHP 変数を作成できます。

メソッドの Object 引数に のようなdataType: 'json'がある場合、PHP を使用して連想配列である JavaScript Object Notation を生成できます。ページでこれを行うために選択する PHP メソッドは. あなたまたはPHPを使用している限り、応答が成功した場合、 の引数は連想配列を保持します。これは、JavaScript の for in ループで次のように使用できます。ajax$wbc.ajax({dataType: 'json'})getSlotInfo.phpjson_encode()printecho json_encode()data$wbc.ajax({success: function(data){}})

for(var i in data){
  var property = i;
  var value = data[i];
}

この JavaScript オブジェクト リテラルに送信する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.

これは、postメソッドJquery AJAX post to PHPを理解するのに役立ちます。

于 2013-06-13T02:57:01.513 に答える