3

我需要向贝宝发送一个发布请求,但在发送表单之前,我需要验证一些输入,并且贝宝页面必须在新选项卡或窗口中打开(没关系)。我无法在同一个窗口中发送请求,因为在主页中我有后台 ajax 回调。所以想法是我可以在新窗口或标签中发送请求吗?

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

<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();
   });
}
4

2 回答 2

1

您也可以使用 JS 打开一个新窗口,然后使用此答案的解决方案:

$("#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);
});
于 2013-03-11T09:55:50.410 回答
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>
于 2013-03-11T09:48:21.470 回答