簡體   English   中英

使用AJAX將數據發布到Google表單

[英]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付費用戶)

Google表單界面

然后,復制鏈接並粘貼到瀏覽器中。 該URL的基本格式如下:

https://docs.google.com/forms/d/e/[FORMID]/formResponse

每個參數都是類型的鍵/值對:entry.XXXXXX = value

預填充的鏈接將為您提供每個相關字段的XXXXX值

必須使用以下標頭進行請求:

方法: GET

內容類型: application / x-www-form-urlencoded

最終的請求看起來像這樣

https://docs.google.com/forms/d/e/123332233bsj333/formResponse?entry.123456=value1&entry.2333442=value2&submit=提交

不要忘了在請求末尾附加Submit = Submit!

它會產生CORS錯誤,但據推測,無論如何,POST應該都會通過。

盡管有可能發出成功的POST請求,出現CORS錯誤並且無法讀取響應,但這僅適用於簡單請求。

因為您的請求具有:

  • 自定義標頭( Access-Control-Allow-OriginAccess-Control-Allow-Methods ,它們是響應標頭,一開始就沒有業務在請求中)
  • 憑證(即,您已設置withCredentials: true

…這是一個預檢請求。

在瀏覽器發出POST請求之前,它將發出OPTIONS請求以尋求許可。

由於未獲得許可,因此請求失敗。


請注意,即使您確實將其轉換為簡單請求並成功進行POST,您仍將獲得狀態0 發生CORS錯誤時,您無法讀取狀態。

更好的選擇是: https : //github.com/jsdevel/google-form

但是我有一個問題,在提交屏幕后如何自定義,並顯示消息:謝謝,您的回復已發送。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM