2015-11-27 53 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