【问题标题】:Append user entered data into redirect url将用户输入的数据附加到重定向 url
【发布时间】:2014-08-05 16:34:18
【问题描述】:

我有一个关于尝试将用户输入的数据附加到重定向 URL 的问题。我使用在线数据库/筹款公司 (Salsa) 进行支持者注册。我想要一个表单,人们可以只输入他们的电子邮件和 zip,将该提交保存到数据库中(因此 onsubmit 重定向),然后如果该人想要填写更多信息,他们可以填写另一个表单,但他们不必。第二种形式应该预先填写他们的电子邮件和 zip,这样他们就不必(将其链接回数据库)

我尝试使用的是 Salsa url,它会自动填充注册页面,前提是它具有字段名称

示例http://wfc2.wiredforchange.com/o/8564/p/salsa/web/common/public/signup?signup_page_KEY=7145&Email=testing@test.tes&Zip=12345

所以http://wfc2.wiredforchange.com/o/8564/p/salsa/web/common/public/signup?signup_page_KEY=7145&Email=[email]&Zip=[zip]

唯一的问题是我不知道如何从用户电子邮件和压缩表单中提取并将其附加到 url。我想我需要使用 javascript,但我不太擅长。

对此的任何帮助都将非常感激。甚至我可能会尝试的其他想法。

编辑:

我能够自己解决一些问题,但仍然可以使用一些帮助。

function URL() { var email = document.getElementById("email").value; window.location = "http://wfc2.wiredforchange.com/o/8564/p/salsa/web/common/public/signup?signup_page_KEY=7145&Email=" + email; }​

我用过

onsubmit="URL(); 返回 false;"在 所以...

<form action="org2.salsalabs.com/save" ; method="POST" name="data" onsubmit="genURL(); false" >
<input type="text" id="user" />
<input type="submit" value="Submit" />

类似的东西,除了它不会首先将数据提交到数据库,它只是将我重定向到第二种形式。我猜它与onsumbit有关。有没有办法让数据先提交到数据库然后重定向到另一个表单?

【问题讨论】:

    标签: javascript forms redirect


    【解决方案1】:

    我将首先向您的数据库发送一个包含信息的 XmlHttpRequest,然后在请求完成时执行您已经确定的 window.location 重定向。这就是它在代码中的样子。

    HTML:

    <form id="myForm">
        Email: <input id="email" type="text" name="Email" /><br />
        Zip: <input id="zip" type="text" name="Zip" /><br />
        <input type="hidden" name="sign_up_page_KEY" value="7145" />
        <input type="button" onclick="saveData()" value="Submit" />
    </form>
    

    JavaScript:

    function saveData() {
        var xmlhttp;
        if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else { // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if(xmlhttp.readyState == 4) { // Triggered when the information is done saving to your database
                var email = document.getElementById("email").value;
                var zip = document.getElementById("zip").value;
                window.location = "http://wfc2.wiredforchange.com/o/8564/p/salsa/web/common/public/signup?signup_page_KEY=7145&Email=" + email + "&Zip=" + zip;
            }
        }
        xmlhttp.open("POST", "org2.salsalabs.com/save", false);
        xmlhttp.send(new FormData(document.getElementById("myForm"))); // Sends a post request to org2.salsalabs.com/save with all the data from the form with id="myForm"
    }
    

    【讨论】:

    • 感谢您的帮助。我最初确实尝试过这个(非常相似的东西),但它没有将它保存到我需要的数据库中。我希望它能够只保存他们的电子邮件和 zip,然后他们可以根据需要填写其他信息,但这不是必需的。如果他们转到第二页,我不希望他们就这样离开,因为他们不知道必须在那里提交。
    • 我试图找到一种使用重定向的方法,以便提交表单,然后将其重定向到wfc2.wiredforchange.com/o/8564/p/salsa/web/common/public/…,电子邮件被填写在第二个表单上的任何内容已经被填满了。
    • @Kara 在您重定向到该链接之前,我对表单提交到的确切位置感到困惑。
    • 我遗漏了表单的一部分,我可能不应该有,
      org2.salsalabs.com/save" method="POST" name="data" onsubmit="genURL(); false " > 这是我现在的问题,我让它重定向但它没有先将它发送到数据库。
    • @Kara 感谢您提供更多信息,我已相应地编辑了我的答案。我希望这能解决您的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-04-24
    • 2021-12-27
    • 2013-05-10
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2021-01-07
    相关资源
    最近更新 更多