javascript - 如何通过 jQuery 和 Ajax 将 Google 表单数据发布到电子表格

标签 javascript ajax forms google-chrome-extension google-sheets

我正在开发一个 Chrome 扩展程序,它本质上是一个简单的自定义 Google 表单,它将发布到响应电子表格中。我获得了以下功能,仅成功发送和填充数据一次,但再也不会:

function postFormToGoogle() {
    var timeOne = $("#time1hour").val();
    var timeTwo = $('#time2hour').val();
    var timeThree = $('#time3hour').val();

    $.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: { "entry_856586387": timeOne, 
        "entry_244812041": timeTwo, 
        "entry_2138937452": timeThree },
        type: "POST",
        dataType: "xml",
        xhrFields: {
            withCredentials: true
        },
        statusCode: {
            0: function () {
                document.getElementById("message").innerHTML = "Your form has been submitted!";
                window.location.replace("ThankYou.html");
            },
            200: function () {
                document.getElementById("message").innerHTML = "Your form has been submitted!";
                console.log("Success");
                window.location.replace("ThankYou.html");
            }
        }
    });
}

我必须包含 cors 请求 header ,因为我收到了阻止我的请求的 No 'Access-Control-Allow-Origin' 警告。

作为扩展,我还在 manifest.json 文件中添加了以下权限:

"permissions": [
  "http://docs.google.com",
  "https://docs.google.com",
  "https://*.google.com",
]

此时,我不确定到底是什么阻止了数据发布。可能的迹象可能是,在提交表单时,我收到“显示临时 header ”的警告,并且服务器花费的时间太长而无法响应,如等待 (TTFB) 时间所示。

我的代码哪里出错了? (出于某种原因,它确实工作过一次。)是否有其他解决方案可以将自定义表单发布到电子表格?

最佳答案

我就是这样做的... http://jsfiddle.net/adutu/7towwv55/1/ 您可以看到您收到了一个 CORS 错误,但它有效……数据到达了它应该在的位置

        function postToGoogle() {
            var field3 = $('#feed').val();

            $.ajax({
            url: "https://docs.google.com/forms/d/[key]/formResponse",
            data: {"entry.347455363": field3},
            type: "POST",
            dataType: "xml",
            statusCode: {
                0: function() {
                    //Success message
                },
                200: function() {
                    //Success Message
                }
            }
        });
        }

查看更多信息 here

关于javascript - 如何通过 jQuery 和 Ajax 将 Google 表单数据发布到电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267773/

相关文章:

javascript - 使用 ng-pattern 的多封电子邮件的正则表达式

Javascript 错误对浏览器的影响

php - Symfony - 如何添加未嵌入基础对象的表单字段

python - 如何隐藏默认标签 Django 模型表单?

Javascript 在 XMLHttpRequest.onload/Uncaught SyntaxError : Unexpected token 中的 JSON.parse(this.responseText) 上停止

javascript - 是否可以将 MVC C# List<int> 转换为 javascript 数组?

node.js - NodeJS Ajax 请求失败

javascript - 导航 map 时向 Google map 添加标记

php - 使用 jQuery 将 JSON 数据发送到 PHP

javascript - 不能在 JQuery 中提交