window.open如果在jQuery函数中成功

时间:2015-09-01 20:06:33

标签: javascript php jquery function

此代码位于我的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'; ?> 

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

2 个答案:

答案 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.
}
...