2015-11-27 23 views
0

我有这个问题,我似乎无法来解决的形式..形式的onsubmit重定向造成不提交

我已经得到了数据提交到一个谷歌片的形式。

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

它工作得很好(但将用户重定向到Google表单感谢页面)。

我试图阻止这种行为(我想加载感谢您网页上我自己的域名),并增加了以下onsubmit事件

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

其本身并不能改变什么。所以我加

return false; 

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

我敢肯定有这个平庸和简单的解决方案,但我只是缺乏知识去解决它。 谢谢。

+0

我的建议是,让页面提交和完成没有搬迁,或搬迁在脚本 –

+0

的结尾处,您可以提交自己的三江源页,并使用PHP和Google API来实现同样的目标。这样你也可以验证你自己的数据。 – Qirel

+0

@SamSwift웃你的意思是什么?你能否详述一下你的想法? @Qirel嗯,那不是太复杂和冗长的蜜蜂吗?这里有一个很好的例子,它的工作原理只是我需要 'HTTP方式:// yaez.de/abo' 所以它必须能够只用JS .. – MichalS

回答

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"); 
      } 
     } 
    }); 
}); 
+0

谢谢。在这种情况下,我是否也需要从表单中移除目标?到目前为止,我已经将ID ajaxForm添加到了我的表单元素中,当然也删除了这个动作和方法。 更改了该函数的网址以指向Google工作表并编辑替换网址。但它似乎没有工作.. – MichalS

+0

有没有任何js错误?请注意,在我的示例的网址中,它需要在您尝试引用的Google中特定窗体的“FORMKEY”。这可能是问题 – Chizzle

+0

是的,我确实有一个formkey。它只是打开一个包含所有表单字段数据的长字符串的新选项卡。而且,这里是从控制台一些jQuery的错误 http://s23.postimg.org/9tyqmkmwb/Capture.png – MichalS