【问题标题】:Stop page from redirecting after submitting google form through AJAX通过 AJAX 提交谷歌表单后停止页面重定向
【发布时间】:2014-12-22 18:39:41
【问题描述】:

我正在使用 AJAX 和 google 电子表格通过从表单字段中获取 POST 数据并通过 google 表单将其发送到电子表格来收集时事通讯的电子邮件数据。我无法获得阻止页面重定向到谷歌感谢页面的代码。这是下面的 AJAX 和表单代码。

<form class="form-inline" role="form" action="https://docs.google.com/forms/d/1TEPXPqigGuN8sayYjz-sk6H-5wAbPaImsgadM2PBFAk/formResponse" method="POST" id="newsletter-form" target="_self" onsubmit="">
    <input type="text" name="entry_291075079" value="" class="form-control" id="Email" dir="auto" placeholder="example@site.com"> 
</form>

<script>
    $("#newsletter-form").submit(function(e) {
        e.preventDefault();
        $.ajax({
            url: "https://docs.google.com/forms/d/1TEPXPqigGuN8sayYjz-sk6H-5wAbPaImsgadM2PBFAk/formResponse",
            data: $(this).serialize(),
            type: "POST",
            dataType: "xml",
            success: function(data) {
                console.log('Submission successful');
            },
            error: function(xhr, status, error) {
                console.log('Submission failed: ' + error);
            }
        });
    });
</script>

【问题讨论】:

  • 实例化一个新窗口,运行Ajax,终止新窗口?

标签: javascript jquery html ajax forms


【解决方案1】:

您的页面正在被重定向,因为它正在通过 POST 进行标准表单提交 - 您的 javascript 代码根本没有附加到表单提交中。要执行您需要的操作,您可以将 JS 代码附加到表单的 submit 事件,并使用 preventDefault() 停止提交,如下所示:

<script>
    $('#ss-form').submit(function(e) {
        e.preventDefault();
        $.ajax({
            url: "url to google form responses",
            data: $(this).serialize(),
            type: "POST",
            dataType: "xml",
            success: function(data) {
                console.log('Submission successful');
            },
            error: function(xhr, status, error) {
                console.log('Submission failed: ' + error);
            }
        });
    });
</script>

【讨论】:

  • 感谢您的帮助,但是在使用 $('#ss-form').submit(e) { 时,我收到该行的错误。 "Uncaught SyntaxError: Unexpected token {" 知道为什么吗?
  • 这消除了错误,但它仍然重定向到谷歌成功页面。
  • 您需要将其从postContactToGoogle() 函数中删除,并使用jQuery 将其附加到submit 事件中,就像我的回答一样。
  • 好的,这样做了,我在控制台中收到此错误:“XMLHttpRequest cannot load docs.google.com/forms/d/…. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null ' 因此不允许访问。index.html:93 提交失败:"
  • 非常好,这意味着正在发送请求。如何解决新问题,请查看this question
猜你喜欢
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 2014-04-03
相关资源
最近更新 更多