[英]POST data to a Google form with AJAX
我試圖將數據從AJAX發布到Google表單,但是即使狀態碼為0的報告成功,數據也不會以以下形式出現:
var dat={ "entry.529474552" :"data1", "entry.1066559787": "name1"};
postToGoogle("1FAIpQLSf4w1OQGsIncaiqXlmfAl4jYSt-e4Zx3xVJa7Weob4LnQbRZQ",dat);
function postToGoogle(id, dat) {
$.ajax({
beforeSend: function (xhr) {
xhr.setRequestHeader('Access-Control-Allow-Origin', 'chrome-extension://EXTENSION_ID');
xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST, PUT');
},
url: "https://docs.google.com/forms/d/e/"+id+"/formResponse",
data: dat,
type: "POST",
dataType: "xml",
xhrFields: { withCredentials: true },
statusCode: {
0: function() { console.log("OK") },
200: function() { console.log("error") },
}
});
}
它會產生CORS錯誤,但據推測,無論如何,POST應該都會通過。
對於那些希望在2019年4月之前做到這一點的人
我今天正在做這個。 當前答案如下:
Google表單中的每個字段都有唯一的ID。 為了檢索它,請填寫您希望以編程方式提交的所有相關表單字段,以獲取預填寫的鏈接
注意:為了確保可以不受限制地訪問URL,您還希望僅對您的域禁用限制(對於GSuite付費用戶)
然后,復制鏈接並粘貼到瀏覽器中。 該URL的基本格式如下:
https://docs.google.com/forms/d/e/[FORMID]/formResponse
每個參數都是類型的鍵/值對:entry.XXXXXX = value
預填充的鏈接將為您提供每個相關字段的XXXXX值
必須使用以下標頭進行請求:
方法: GET
內容類型: application / x-www-form-urlencoded
最終的請求看起來像這樣
不要忘了在請求末尾附加Submit = Submit!
它會產生CORS錯誤,但據推測,無論如何,POST應該都會通過。
盡管有可能發出成功的POST請求,出現CORS錯誤並且無法讀取響應,但這僅適用於簡單請求。
因為您的請求具有:
Access-Control-Allow-Origin
和Access-Control-Allow-Methods
,它們是響應標頭,一開始就沒有業務在請求中) withCredentials: true
) …這是一個預檢請求。
在瀏覽器發出POST請求之前,它將發出OPTIONS請求以尋求許可。
由於未獲得許可,因此請求失敗。
請注意,即使您確實將其轉換為簡單請求並成功進行POST,您仍將獲得狀態0
。 發生CORS錯誤時,您無法讀取狀態。
更好的選擇是: https : //github.com/jsdevel/google-form
但是我有一個問題,在提交屏幕后如何自定義,並顯示消息:謝謝,您的回復已發送。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.