表单onsubmit重定向导致表单未提交

时间:2015-11-27 15:52:33

标签: javascript php forms

我有这个问题,我似乎无法解决..

我有一张表格可以将数据提交到谷歌表。

<form action="https://docs.google.com/sheeturl" method="post" target="hidden_iframe1">

效果非常好(但是将用户重定向到Google表单感谢页面)。

我试图阻止此行为(我想在我自己的域上加载感谢页面)并添加以下onsubmit事件

onsubmit="window.location.href = 'http://thankyoupage.html';"

它本身不会改变任何东西。所以我添加了

return false;

现在重定向工作正常(加载我的感谢页面),但表单数据没有提交到工作表。

我很确定这是一个平庸而简单的解决方案,但我只是缺乏解决它的知识。 感谢。

1 个答案:

答案 0 :(得分:0)

通过设置返回false,您基本上是在劫持表单的功能 - 它根本不会发布到谷歌那样。尝试使用AJAX提交表单。使用jQuery可以这样做:

$("#ajaxForm").submit(function (e) {
    e.preventDefault();
    $.ajax({
        url: "https://docs.google.com/forms/d/FORMKEY/formResponse",
        beforeSend: function (xhr) {
            xhr.setRequestHeader('Access-Control-Allow-Origin', 'chrome-extension://EXTENSION_ID');
            xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST, PUT');
        },
        data: JSON.stringify($(this).serializeArray()),
        type: "POST",
        dataType: "xml",
        xhrFields: {
            withCredentials: true
        },
        statusCode: {
            0: function () {
                document.getElementById("message").innerHTML = "Your form has been submitted!";
                window.location.replace("http://thankyoupage.html");
            },
            200: function () {
                document.getElementById("message").innerHTML = "Your form has been submitted!";
                console.log("Success");
                window.location.replace("ThankYou.html");
            }
        }
    });
});