我试图在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');
在浏览器控制台上,我得到这个“无效参数语法”,“描述”:“字段的值不符合预期的格式。
更新的代码,现在在一个块中。我确实在你的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');
我首先要猜测PHP代码和JS代码包含在同一个PHP文件中,如果没有,那么它永远不会工作,不是没有使用会话变量或者这样。
如果它们在同一个文件中,您需要进入包含JS函数的网页的源代码,以查看在$ AMT替换中放置了什么值。
如果您将其中的内容放在OP中,那么人们应该能够更好地帮助您。
尝试在隐藏字段和访问中存储值
<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
}
}]
});
}
}
我重构了你的代码并发现了一个问题:
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”没有一个闭括号,用于将参数传递给函数。