Как получить доступ к переменной PHP внутри массива объектов JavaScript - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь получить доступ к переменной PHP внутри функции JavaScript, я использую PayPal API кнопки создания и пытаюсь отправить сумму, хранящуюся в переменной PHP, в функцию JavaScript, которая является массивом объектов.

Проблема в том, что я пробовал разные способы доступа к переменной PHP внутри JavaScript, но ни один из них не работал.

Вот часть кода:

PHP Part:

    <?php
          //I tested this amount is working fine
          $myamount = $order['amount'];
          $dec = '.00';
          $AMT = $myamount . ' ' . $dec; 

    ?>

JS Part:

 paypal.Buttons(
    {

         createOrder: function(data, actions) {
         // Set up the transaction

         return actions.order.create({
           purchase_units: [{
             amount: {

                   value: amt
             }
           }]
         });
       }
     }

 ).render('#paypal-button-container');

В консоли браузера я получаю это "Синтаксис недействительного параметра", "описание": "Значение поля не соответствует ожидаемому формату.

Ответы [ 4 ]

1 голос
/ 17 апреля 2019

Обновлен код, теперь в одном блоке.Я обнаружил в вашем PHP-коде ошибку, которая могла привести к ошибкам, это было расстояние между суммой и «.00».Это может привести к тому, что переменные JS будут работать некорректно, поскольку вы будете хранить значение, например «123 .00» вместо «123.00».

PHP-код

$AMT = $order['amount'].'.00'; 

JavascriptКод:

paypal.Buttons() <-- The closing bracket was missing.
{
    createOrder: function(data, actions) {

        // Set up the transaction
        return actions.order.create({
            purchase_units: [{
                amount: {
                    value: '<?=$AMT;?>' // Short code for the print or echo function.
                }
            }]
        });
    }
}.render('#paypal-button-container');
0 голосов
/ 17 апреля 2019

Сначала я угадаю, что код PHP и код JS содержатся в одном и том же файле PHP, если нет, то он никогда не будет работать, без использования переменных сеанса или как таковых.

Если они находятся в одном файле, вам нужно будет зайти в исходный код веб-страницы, содержащей функцию JS, чтобы увидеть, какое значение было помещено в подстановку $ AMT.

Если вы сделаете это и поместите содержимое в ОП, люди смогут помочь вам лучше.

0 голосов
/ 17 апреля 2019

Я произвел рефакторинг вашего кода и обнаружил проблему:

paypal.Buttons() <-- The closing bracket was missing.
{
    createOrder: function(data, actions) {

        // Set up the transaction
        return actions.order.create({
            purchase_units: [{
                amount: {
                    value: '<?=$AMT;?>' //unable to retrieve value
                }
            }]
        });
    }
}.render('#paypal-button-container');

В вашем исходном коде у функции "paypal.Buttons" не было закрывающей скобки, которая используется для передачи параметров в функцию.

0 голосов
/ 17 апреля 2019

Попробуйте сохранить значение в скрытом поле и получить доступ

<input type="hidden" id="xyz" value="<? echo $AMT ?>" />



 createOrder: function(data, actions) {
  // Set up the transaction
   var amt = document.getElementById('xyz').value;
   return actions.order.create({
           purchase_units: [{
             amount: {

                   value: amt
             }
           }]
         });
       }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...