【发布时间】:2018-03-27 18:32:18
【问题描述】:
在 PayPal Checkout Express(客户端)javascript 的中间,我需要使用 AJAX 来调用 PHP 页面的输出,但我有点卡住了。
PHP 页面:
$data = array('retid' => $username);
header('Content-Type: application/json');
echo json_encode($data);
现在在另一个 javascript 页面中,我只想通过 AJAX 将 PHP 变量 $username 捕获为 javascript 变量。
<?php
$IDToPassPlus = ($id.'&retid=');
?>
<script>
//It's the inclusion of this part, which tries to get the "retid" js variable, that stops the script from rendering the Paypal button:
$.ajax({
type: 'POST',
url: 'test-call.php',
dataType: 'json',
success: function(response) {
var retid = response.data.retid;
},
});
paypal.Button.render({
env: 'sandbox',
client: {
sandbox: 'xxxxx',
production: 'xxxxx'
},
commit: true,
style: {
layout: 'vertical',
size: 'responsive',
shape: 'rect',
color: 'gold'
},
payment: function(data, actions) {
return actions.payment.create({
payment: {
transactions: [
{
amount: { total: '0.99', currency: 'GBP' }
}
],
redirect_urls: {
'cancel_url': 'pay-return-cancel.php?id=<?php echo $IDToPassPlus; ?>'+retid
}
}
});
},
onAuthorize: function(data, actions, error) {
return actions.payment.execute().then(function() {
window.alert('Payment Complete!');
window.location.replace('test-return.php?id=<?php echo $IDToPassPlus; ?>'+retid);
if (error === 'INSTRUMENT_DECLINED') {
actions.restart();
}
});
},
onCancel: function(data, actions) {
return actions.redirect();
},
onError: function(err) {
window.location.replace('pay-return-error.php?id=<?php echo $id; ?>'+retid);
}
}, '#paypal-button');
</script>
没有贡献者的 AJAX 建议,该按钮可以完美运行。但我试图通过 AJAX 从 PHP 页面传递一个变量,以将其添加到重定向中。
【问题讨论】:
-
您是在使用页面 javascript 还是在单独的页面上?
-
PHP和JS在不同的页面
-
您不能在 .js 文件中调用 PHP 变量,但您可以将 PHP 变量设置为 HTML dom 元素,然后从 javascript 中读取它。
-
例如:
<meta name="_token" content="<?php csrf_token() ?>">你可以读取它的数据为:var x = $('meta[name="_token"]').attr('content') -
所以你现在正在学习 ajax,这是一个很好的下一步。在尝试将 ajax 与 Paypal 的结帐流程等复杂的东西集成之前(这使得其他人很难帮助您,因为大多数人都不知道该流程),从一个更简单的 ajax 示例开始。从一个非常简单的/测试页面开始,您只需单击一个简单的按钮即可使用 ajax 将 $username 回显到页面。一旦你能做到这一点,那么你就可以在这里编写稍微复杂一些的代码。