在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页面传递变量,将其添加到重定向中。
答案 0 :(得分:0)
可以在页面内使用javascript作为
<script>
var js_var = "<?php echo $php_var;?>";
//now you have php var value in javascript to use on .php page
如果不是您所寻求的,请详细说明您的问题。
答案 1 :(得分:0)
好的,所以到目前为止我知道你想通过ajax检索PHP响应而你不知道如何进行ajax调用。以下是您可以在js文件中使用的示例:
$.ajax({
type: 'POST',
url: 'YOUR PHP SCRIPT URL',
dataType: 'json',//this will make it understand what datatype to expect in response
success: function(response) {
var retid = response.data.retid; //here you get on successfull response
},
});
答案 2 :(得分:0)
首先,阅读整个页面;它将在您作为开发人员的整个职业生涯中真正帮助您,它极大地帮助了我:https://stackoverflow.com/help/mcve
然后,让我们使用从该页面获得的知识来制作MCVE。把它放在一个新页面上:
$.ajax({
type: 'POST',
url: 'test-call.php',
dataType: 'json',
success: function(response) {
var retid = response.data.retid;
console.log(retid);
},
});
这应该将retid的值打印到您的控制台。看看你的控制台。注意任何错误,或者retid的值是否按预期打印?
那么为什么我们花时间创建一个新页面并将其放在上面呢?我们正在缩小我们的问题,我们试图通过创建MCVE找到问题的确切原因。如果我们不知道导致问题的,如果我们无法创建一个非常基本的例子来说明问题,我们将很难解决问题和/或寻求帮助
(注意1,在此处发布时,请将您的代码设置为“漂亮”。缩进它,因为它应缩进;这使其他人更容易阅读。您要求人们花些时间来帮助您,免费;让他们尽可能轻松地阅读和理解您的代码)
(注2,这里有一个例子,我有一些非常非常复杂的MySQL交互,我有一个问题。而不是发布所有复杂的代码,我遵循MCVE概念:DRY - how to extract repeated code to...a stored function maybe?和我做了一些假的,非常简单的问题示例。自从我这样做以来,我能够从专家那里得到快速,简洁的答案,注意我接受的答案是来自Stackoverflow上所有得分最高的用户之一)