2013-03-11 71 views
3

我需要向paypal发送一个post请求,但在发送表单之前,我需要验证一些输入,并且必须在新选项卡或窗口中打开paypal页面(无关紧要) 。我无法在同一窗口中发送请求,因为在主页面中我有背景ajax回调。所以ideea是我可以在新窗口或标签中发送请求吗?html表单目标_blank浏览器不允许

在所有主要的浏览器中,这是不允许的,浏览器会阻止请求。

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank" id="paypal_form"> 
<input type='hidden' name='some_value' id='some_value' value='151' /> 
</form> 

<div id='button_submit' onClick="verify_paypal_form();">SUBMIT !</div> 

而现在的AJAX部分:

function verify_paypal_form(){ 
    $.post('verify.php', { someValue : 'FOO' }, 
    function(data){ 
     if(data == 'OKAY') $('#paypal_form').submit(); 
    }); 
} 
+0

您可以使用iframe来代替。使用id将表单的目标设置为该iframe。 – 2013-03-11 09:46:34

回答

1

设置形式的目标IFRAME和尝试。您可以将iframe作为新选项卡的内容显示。

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="myFrame" id="paypal_form"> 
<input type='hidden' name='some_value' id='some_value' value='151' /> 
</form> 

<div id='button_submit' onClick="verify_paypal_form();">SUBMIT !</div> 
<iframe id="myFrame" ...... set other attributes as required....></iframe> 
+0

我不明白。 iframe的含义?我需要在新的窗口或选项卡中将发送请求发送到贝宝。 – 2013-03-11 10:15:44

1

你可以打开与JS的新窗口太然后使用this answer解决方案:

$("#paypal_form").submit(function() { 
    var newWin = window.open("", "", ""); // SPecify your window attributes here, but no URL 
    // do an XMLHTPPRequest and document.write the result to the new window: 
    var winDoc = doAJAXAndReturnOtherPagesSource(); 
    newWin.document.write(winDoc); 
}); 
相关问题