【问题标题】:after submitting form button redirect to 2 different page提交表单按钮后重定向到 2 个不同的页面
【发布时间】:2019-05-17 05:21:07
【问题描述】:

我有 html 表单,当我点击它时,它会重定向到 paypal 页面,但我希望在重定向到 paypal 页面之前,它应该先发送到 send.php,然后是 paypal 页面

我已经在提交按钮上尝试过 onclick 功能,并且该功能使用窗口定位功能重定向到 send.php 页面,但它不起作用页面仅重定向贝宝页面

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" enctype="multipart/form-data" >

    <input class="btn btn-primary" type="submit" value="Send" onclick="mymail()">

</form>

javascript 代码

<script>
function mymail() {
 window.location.assign("send.php")
}
</script>

它只重定向 paypal 页面而不是在 send.php 上重定向

【问题讨论】:

    标签: php ajax


    【解决方案1】:

    首先您必须为表单添加 id 并更改 onclick 功能,如下所示

    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="Post" enctype="multipart/form-data" id="frm">
        <input type="submit"  value="send" onclick="return mymail()">
    </form>
    

    现在在 mymail() 中使用 ajax 调用来 send.php 并在 ajax 成功后通过 javascript 按表单 id 提交表单,如下所示

    function mymail()
        {
            var xhttp = new XMLHttpRequest();
          xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                  document.getElementById("frm").submit()
            }
          };
          xhttp.open("GET", "send.php", true);
          xhttp.send();
    
            return false;
        }
    

    现在点击提交,页面通过ajax转到send.php,成功后表单将被提交

    【讨论】:

    • 伟大的先生..你给了我我想要的。非常感谢先生,来自印度的大心脏
    • 谢谢您,如果此答案符合您的要求,请随时为答案投票
    【解决方案2】:

    提交按钮的第一个事件是将表单提交到您的“action”位置(paypal),第二个事件“onclick”是重定向到send.php。

    因此,如果您希望它先发送到 send.php,请先执行操作 send.php,然后在那里执行您的操作,而不是将您的帖子数据发送到 paypal。 看看这样的东西:https://stackoverflow.com/a/32197769/6340057

    【讨论】:

      【解决方案3】:

      这里你使用的是输入类型提交,所以当它被按下时,它将采取默认的表单提交操作,这是在 paypal.com 上的

      你的点击也在这里工作(尝试发出警报,它会执行)也可以工作,但问题是当点击完成它的执行时,它会继续执行表单的默认操作。

      所以如果你想从你的 on click my mail() 函数中重定向,那么你需要将 ajax 添加到 javascript 函数中

        <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" enctype="multipart/form-data">
      
      
      function mymail()
          {
          var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
            document.getElementById("frm").submit()
          }
        };
        xhttp.open("GET", "send.php", true);
        xhttp.send();
      
          return false;
         }
      

      【讨论】:

      • 是的,现在页面重定向到 send.php 但在 send.php 之后我想执行表单操作(paypal)
      • 好的,在这种情况下,您需要向服务器发送 ajax 请求,因此它首先会转到 send.php,完成 send.php 工作后会转到 paypal 网站。请检查修改后的答案,我已经改了。
      • 你可以查看@rch给出的答案,他也是这样做的。
      • 这里,onsubmit你的表单返回false,第二次提交的表单会怎样
      • @rch :是的,我的错误先生。我现在删除它。感谢您继续跟踪先生。
      【解决方案4】:

      首先明确action=""method="",因为即使您更改了按钮属性,当用户在该表单中单击输入时,无论您的javascript 做什么,它都会重定向到给定的操作。

      其次,将您的 &lt;input&gt; 更改为 &lt;button type="button"&gt; 而不是 &lt;input type="submit"&gt; 并像您一样在那里调用 onclick="mymail()" 函数。

      您的表单如下所示:

      <form enctype="multipart/form-data" >
      
          <button class="btn btn-primary" type="button" onclick="mymail()">Send</button>
      
      </form>
      

      确保您阅读了所有表单字段并将其放入数据中。

      祝你好运。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-09
        • 1970-01-01
        • 1970-01-01
        • 2020-02-18
        • 2017-06-26
        • 1970-01-01
        相关资源
        最近更新 更多