JavaScript自动提交PayPal表单开新窗口 如何改为同窗口跳转
PayPal自动提交表单跳转问题修复方案
根因定位
- 表单提交后自动打开新窗口的核心原因是表单标签上的
target="PayPal"属性。该属性用于指定表单提交后响应内容的加载目标,传入自定义窗口名称时,浏览器会自动新建对应名称的独立窗口/标签页加载跳转结果,而非复用当前窗口。
原有自动提交的JS逻辑无需调整,问题完全出在表单的target属性配置上
修复操作
二选一即可:
- 直接删除
<form>标签上的target="PayPal"属性,表单默认会在当前窗口完成提交跳转 - 显式将
target属性值改为_self,明确指定使用当前窗口加载跳转结果
修复后代码示例
原有JS代码无需修改
window.onload = function() { // u should put a name for your form document.forms['my_form'].submit(); }
修改后的HTML表单代码
<!-- 方案1:删除target属性 --> <form id="my_form" action="https://www.paypal.com/cgi-bin/webscr" method="post" style="margin:0;padding:0;"> <input type="hidden" name="business" value="test@yahoo.com"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="item_name" value="Membership"> <input type="hidden" name="item_number" value="1 Month"> <input type="hidden" name="amount" value="23"> <input type="hidden" name="currency_code" value="USD"> <input type="hidden" name="shipping" value=""> <input type="hidden" name="shipping2" value=""> <input type="hidden" name="handling" value=""> <input type="hidden" name="return" value="https://test.com/Successful_Payment.php"> <input type="hidden" name="cancel_return" value=""> <input type="hidden" name="undefined_quantity" value="0"> <input type="hidden" name="receiver_email" value="test@yahoo.com"> <input type="hidden" name="no_shipping" value="1"> <input type="hidden" name="no_note" value="0"> </form> <!-- 方案2:将target值改为_self --> <!-- <form target="_self" id="my_form" action="https://www.paypal.com/cgi-bin/webscr" method="post" style="margin:0;padding:0;"> 其余input标签内容与原有代码完全一致 </form> -->
内容的提问来源于stack exchange,提问作者Auref Pourkarimi
相关产品推荐
相关产品推荐

