【问题标题】:POST works with alert message but doesn't without itPOST 适用于警报消息,但不能没有它
【发布时间】:2023-03-20 16:42:01
【问题描述】:

我正在使用下面的代码向谷歌应用脚​​本发出发布请求

    var url ="MY WEBAPP EXEC"

     function submitForm() {
        var postRequest = {}
        postRequest.name = $("#inputName").val();
        postRequest.email = $("#inputEmail1").val();
        postRequest.message = $("#inputMessage").val();

        alert(JSON.stringify(postRequest));  // this alert

        $.post(url, postRequest, function(data,status){
           alert('success')
        });
    }

我很困惑为什么帖子可以使用警报但没有它就无法工作。谢谢。

=== 好的,我想我的问题不够清楚,抱歉。

我有一个远程访问 GAS 的表单。我认为该网址暗示我正在远程访问 GAS。目前我正在我的本地主机和上面的 JS 上工作,如果警报语句存在,它就可以工作,如果警报不存在,则不做任何事情。

我在 GSuite Developer Hub 上查看执行列表,以查看请求是失败还是完成。我观察到如果警报语句在脚本中,则执行状态已完成,但如果警报语句不存在,则没有任何反应。如果警报不存在,我假设我的帖子脚本不起作用。知道为什么吗?

【问题讨论】:

  • 当它“不起作用”时,会发生什么?
  • @JaromandaX“不起作用”显然意味着警报没有被显示......因为它除了显示之外没有其他功能。
  • 问题可能是您如何调用 submitForm 函数 - function submitForm(e) { e.prevendDefault(); ... rest of your code } 有帮助吗?
  • 我做了你的 e.preventDefault() @JaromandaX ...它正在工作!你可以把它放在答案上,这样我就可以投票了。谢谢!
  • @Martin GAS 是一个已发布的网络应用程序(在这种情况下没有客户端)。您可以从世界任何地方发布到 GAS 网址。这就是我的观点。请参阅heredoGet()and doPost() are invoked whenever a request is made to the script's URL 此处,从本地主机/另一个网站远程向脚本发布的 url 发出 POST 请求。上面发布的脚本不在iframe 中运行(尽管这更常见)

标签: javascript forms google-apps-script web-applications


【解决方案1】:

您还没有确切显示该函数是如何调用的,但很可能是因为,如果这确实是一个“表单提交”操作,那么提交表单的结果是“加载一个新页面”(这可以与您所在的页面相同,默认情况下,表单标记中没有action 属性

由于您想在表单提交上执行 AJAX,您需要“阻止”“默认”表单提交操作 - 这可以通过下面的第二行和第三行来实现

 var url ="MY WEBAPP EXEC"
 function submitForm(e) { // if this function is called using an event handler, it gets an event as the first and only argument
    e.preventDefault(); // prevent the "default" form submit action
    var postRequest = {}
    postRequest.name = $("#inputName").val();
    postRequest.email = $("#inputEmail1").val();
    postRequest.message = $("#inputMessage").val();

    alert(JSON.stringify(postRequest));  // this alert

    $.post(url, postRequest, function(data,status){
       alert('success')
    });
}

【讨论】:

  • 我自定义了我的函数调用以具有事件参数。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-08-13
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多