我正在从不同域下的网页向Google App Script Web应用程序发送发布请求。GAS端的doPost方法处理该请求,并返回一个字符串。我可以看到请求到达服务器,但客户端没有收到响应。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
function myFunc() {
$.post("https://googlewebappURL", postdata).done(function(responsedata) {
alert("Data Loaded: " + responsedata);
});
};
</script>
警报呼叫没有发生。我的日志证实,这篇帖子确实传到了网络应用程序。
我是不是做错了什么?
我认为您的javascript运行良好。对于你的情况,我认为以下几点是肯定的。
确认要点:
- 似乎
postdata
没有定义 - 修改脚本时,是否更新脚本版本并将Web应用程序部署为新版本。如何部署Web应用程序如下。
- 在脚本编辑器上
- 发布
- 部署为Web应用程序
- 创建新的项目版本
- 在执行应用程序时,选择"您的帐户">
- 在"谁可以访问该应用程序"中,选择"任何人,甚至匿名">
- 单击"部署">
- 复制"当前web应用URL">
- 单击"确定">
- 部署为Web应用程序
此处提供了部署Web应用程序的详细信息。
即使你确认了以上几点,如果问题没有解决,你能试一下下面的简单例子吗?如果修改后的脚本不起作用,也可以使用curl示例。当示例工作时,您将检索value
。
样品:
谷歌应用程序脚本:code.gs
function doPost(e) {
return ContentService.createTextOutput(e.parameter.key);
}
修改了您的脚本:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(function() {
var postdata = {key: "value"}; // Added
$.post("https://googlewebappURL", postdata).done(function(responsedata) {
alert("Data Loaded: " + responsedata);
});
});
</script>
卷曲样品:
curl -L -d "key=value" "https://googlewebappURL"
如果以上样品不起作用,我可以问你关于doPost()
的情况吗?如果我误解了你的问题,我很抱歉。