POST适用于警报消息,但并非没有警报消息

时间:2018-12-12 22:09:35

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

我正在使用以下代码向Google应用程序脚本发布请求

    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的表格。我以为该URL暗示我正在远程访问GAS。目前,我正在本地主机和上面的JS上工作,如果存在Alert语句,则可以正常工作;如果没有Alert,则不执行任何操作。

我正在GSuite开发人员中心上查看执行列表,以查看请求是否失败或完成。我观察到警报语句是否在脚本中,执行状态已完成,但是如果警报语句不存在,则什么也不会发生。我假设如果没有警报,我的帖子脚本将不起作用。知道为什么吗?

1 个答案:

答案 0 :(得分: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')
    });
}