【问题标题】:How to access PHP variable inside JavaScript object array如何访问 JavaScript 对象数组中的 PHP 变量
【发布时间】:2019-09-07 09:55:37
【问题描述】:

我正在尝试访问 JavaScript 函数中的 PHP 变量,我正在使用 PayPal create button API 并尝试将存储在 PHP 变量中的金额发送到作为对象数组的 JavaScript 函数中。

问题是我尝试了不同的方法来访问 JavaScript 中的 PHP 变量,但它们都不起作用。

以下是部分代码:

PHP 部分:

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

    ?>

JS 部分:

 paypal.Buttons(
    {

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

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

                   value: amt
             }
           }]
         });
       }
     }

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

在浏览器控制台上我得到这个 "INVALID PARAMETER SYNTAX", "description": "The value of a field does not conform to the expected format.

【问题讨论】:

  • ?&gt;之后删除;
  • @AtalPrateek 已解决但仍未解决
  • 你至少检查过这个输出的 HTML 代码是什么样子的吗?
  • 我已经做过并且也提到了错误。
  • 你使用MVC模式吗?如何将变量传递给 HTML 代码?你能在 HTML 代码上回显它吗?

标签: javascript php arrays variables paypal


【解决方案1】:

更新的代码,现在在一个块中。我确实在您的 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');

【讨论】:

    【解决方案2】:

    我首先要猜测 PHP 代码和 JS 代码包含在同一个 PHP 文件中,如果不是,那么它永远不会工作,而不是不使用会话变量等。

    如果它们在同一个文件中,您将需要进入包含 JS 函数的网页的源代码,以查看在 $AMT 替换中放置了什么值。

    如果您这样做并将其内容放在 OP 中,人们应该能够更好地帮助您。

    【讨论】:

    • 使用相同的文件 $AMT 正在打印需要的结果,但问题是如何传递到值:?
    • 添加了一个新答案。
    【解决方案3】:

    尝试在隐藏字段中存储值并访问

    <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
                 }
               }]
             });
           }
         }
    

    【讨论】:

    • 问题是我如何传递值:属性?
    • 这是一种通用的方法,将值存储在隐藏中并通过javascript获取并使用它
    【解决方案4】:

    我已经重构了您的代码并发现了一个问题:

    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”没有用于将参数传递给函数的右括号。

    【讨论】:

    • 你真的了解js吗?
    • 不确定您的评论是什么意思,但是是的,我确实知道 JS。 Rakesh 和我自己都给了你工作代码,尽管有细微的差别。两者都可以,但如果 $AMT 包含数字字符以外的任何内容,Rakesh 解决方案将出错,我的不会。
    • 即使在修改后的问题中,您仍然省略了 paypal.Buttons() 函数上的右括号。括号是为了使参数能够在函数调用中传递,就像在渲染函数调用中添加的元素一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多