此代码位于我的footer.php文件中,我将其包含在页面中。我想要的是在我的检查地址jQuery中运行此代码,如果数据等于传递。我也尝试将此代码放在同一页面中,但仍无效。
<script src="//www.paypalobjects.com/api/checkout.js" async></script>
<script type="text/javascript">
window.paypalCheckoutReady = function () {
paypal.checkout.setup('<?php echo($merchantID); ?>', {
button: 'placeOrderBtn',
environment: '<?php echo($env); ?>',
condition: function () {
return document.getElementById('paypal_payment_option').checked === true;
}
});
};
</script>
这是我要插入paypalCheckoutReady函数if(data =='pass);然后运行该功能并打开一个窗口。
<script>
function check_address(){
var data = {
'first_name' : jQuery('#first_name').val(),
'last_name' : jQuery('#last_name').val(),
'street' : jQuery('#street').val(),
'street2' : jQuery('#street2').val(),
'city' : jQuery('#city').val(),
'state' : jQuery('#state').val(),
'zip_code' : jQuery('#zip_code').val(),
'country' : jQuery('#country').val(),
'phone' : jQuery('#phone').val(),
'notetext' : jQuery('#notetext').val(),
};
jQuery.ajax({
url : '/proj/admin/parsers/check_address.php',
method : 'POST',
data : data,
success : function(data){
if(data != 'passed'){
jQuery('#payment-errors').html(data);
}
if(data == 'passed'){
jQuery('#payment-errors').html("");
/*I want to run the window.open code here*/
paypalCheckoutReady(); //I tried this but not working
}
},
error : function(){alert("Something Went Wrong");},
});
}
</script>
<?php
} else {
$resArray = CallShortcutExpressCheckout ($_POST, $returnURL, $cancelURL);
$ack = strtoupper($resArray["ACK"]);
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING") //if SetExpressCheckout API call is successful
{
RedirectToPayPal ( $resArray["TOKEN"] );
}
else
{
//Display a user friendly Error on the page using any of the following error information returned by PayPal
$ErrorCode = urldecode($resArray["L_ERRORCODE0"]);
$ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]);
$ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]);
$ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]);
echo "SetExpressCheckout API call failed. ";
echo "Detailed Error Message: " . $ErrorLongMsg;
echo "Short Error Message: " . $ErrorShortMsg;
echo "Error Code: " . $ErrorCode;
echo "Error Severity Code: " . $ErrorSeverityCode;
}
}
?>
<?php include 'includes/footer.php'; ?>
希望你能帮我解决这个问题。谢谢
答案 0 :(得分:0)
你可能有竞争条件。
尝试移动
<script src="//www.paypalobjects.com/api/checkout.js" async></script>
在您的脚本之后。
如果PayPal的.js文件在本地缓存,它可能会在代码运行之前初始化,然后paypalCheckoutReady
函数将不会被调用。
答案 1 :(得分:-1)
正如你想要的那样运行功能?然后在那里调用它。
...
if (data == 'passed') {
jQuery('#payment-errors').html("")
paypalCheckoutReady(); // you don't need to type window.
}
...