javascript - 使用 AJAX 将数据发布到 Google 表单
问题描述
我正在尝试将数据从 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
预填链接将为您提供每个相关字段的 XXXX 值
请求必须使用以下标头:
方法:获取
内容类型: application/x-www-form-urlencoded
最终请求如下所示
不要忘记在您的请求末尾附加 submit=Submit !
推荐阅读
- node.js - 从 Node 中的 request.body 获取值
- python - 重新采样或归一化轨迹数据,使点均匀分布
- flutter - Flutter Routes 返回黑屏
- node.js - 节点js knex更新表中的记录
- spring - 如何在 jsf portlet(gradle build 项目)中使用“liferay 门户工作流 kaleo api”?生命射线 7.0
- variables - Markdown 中文本片段的占位符变量
- postgresql - 我想在 kubernetes 中自动化 postgresql 命令
- regex - raku: Longest match 没有做最长的比赛,但在第一场比赛后退出
- python - 张量流中是否有任何功能可以从模型中获取所有超参数或选项?
- java - JPA/Hibernate 回滚子级列表不起作用