窗口.打开如果成功的jQuery函数

window.open if success in jQuery function

本文关键字:jQuery 函数 成功 如果 窗口      更新时间:2023-09-26

此代码位于我的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函数如果(data == 'passed);然后运行该函数并打开一个窗口。

 <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'; ?> 

希望你能帮我解决这个问题。谢谢你

可能存在竞争条件。

尝试移动

<script src="//www.paypalobjects.com/api/checkout.js" async></script>

如果PayPal的.js文件缓存在本地,它可能会在你的代码运行之前初始化,然后paypalCheckoutReady函数将永远不会被调用。

你想让函数运行吗?然后在那里调用它。

...
if (data == 'passed') {
  jQuery('#payment-errors').html("")
  paypalCheckoutReady(); // you don't need to type window.
}
...