【问题标题】:html post form different destinationshtml发布表单不同的目的地
【发布时间】:2011-06-09 20:25:27
【问题描述】:

我正在开发一个 django 网络应用程序,我希望在其中进行注册过程。在这个注册过程中,我当然有一个要求姓名、电子邮件和密码的表格。我想做的是,通过邮寄方式将表格发送到 2 个不同的地方。其中一个当然是保存密码等的注册数据库,另一个是 Emencia 时事通讯应用程序。如果有帮助,Emencia 只需要电子邮件和姓名(可选)。

那么我怎样才能只使用一个表单、2 个发送位置以及仅获取表单的一些数据而不是全部数据?

谢谢!

【问题讨论】:

    标签: javascript python html django http-post


    【解决方案1】:

    虽然我同意更好的方法是在服务器端处理此问题,但请允许我更正一下,将相同的表单提交给不同的服务器端脚本是非常可能

    有关脚本和一些演示,请参见下面的页面: How to create a multi-submit form

    它适用于 IE、Firefox 和 Chrome。

    【讨论】:

      【解决方案2】:

      你不能。无法将表单发送到两个资源。

      您可以做的是在您的注册脚本中向新闻通讯脚本发送一个 HTTP 请求,例如使用 urllib2。

      【讨论】:

        【解决方案3】:

        为此,您必须使用 Javascript 和 AJAX

        http://www.tizag.com/ajaxTutorial/

        【讨论】:

          【解决方案4】:

          这种诡计过去在大多数浏览器中都可以使用,但是……现在它似乎只在 Firefox 中有效。在两次提交之间添加延迟使其可以在 IE 中工作,但不能在 Chrome 中工作。我真的很惊讶它仍然可以在 Firefox 中运行 :)

          <html>
          <body>
          <form method='post' action='place1.php' onsubmit='this.action="place1.php";this.submit();this.action="place2.php";this.submit();return false;'>
          <input type='text' name='thing' value='something' />
          <input type='submit' value='send' />
          </form>
          </body>
          </html>
          

          【讨论】:

            【解决方案5】:

            这是一个使用 jQuery 的解决方案...

            $("input:submit").click(function(e) {
                e.preventDefault();
            
                // javascript validation
            
                // run this if validation succeeds
                $.ajax({
                    url: "url to emencia newsletter",
                    type: 'post',
                    data: "Email=" + $("#emailField").val() + "&Name=" + $("#nameField").val(),
                    success: function(result) {
                        // do stuff
                        $('form').submit();
                    }
                });
                // could also go here if you don't want the success callback -- $('form').submit();
            });
            

            所以会发生什么是您单击提交按钮。 e.preventDefault 告诉浏览器停止提交表单。然后,您运行一个 ajax 请求以提交给 emencia。成功后,它会提交原始表单。我不确定您是否需要将表单提交成功或只是将其放在 ajax 请求之后。我认为这并不重要。

            【讨论】:

            • 您能否进一步详细说明...例如是否成功:在这种情况下必须存在部分我只是希望它在成功的情况下透明,只需重定向到注册完成站点。另外我应该在表格的哪个位置调用脚本? onsubmit 或类似的东西?谢谢。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-04-07
            • 2015-05-18
            • 1970-01-01
            • 1970-01-01
            • 2013-09-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多