apps脚本使用doGet使用ajax发送输入数组

时间:2018-11-13 07:21:05

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

我正在尝试使用doGet()将带有Ajax的输入数组发送到Google脚本,问题是我无法在Google脚本中访问它。我的表单有多个输入字段,名称分别为first_name []和last_name []。我还发送了一个回调数据,在Google脚本中我可以访问e.parameters.callback,但无法访问e.parameters.first_name []和e.parameters.last_name []。当我删除[]并尝试访问e.parameters.first_name和e.parameters.last_name时,它返回未定义。您可以在下面看到e.parameters的结构。我想遍历每个first_name []和last_name []参数。

enter image description here

这是html表单

enter image description here

<form id="form1" role="form" class="form-inline">
    <div id="myRepeatingFields" clas="col-md-12">
        <div class="entry inline-form col-xs-12">
            <input class="typeahead form-control" name="first_name[]" type="text" placeholder="first name" />
            <input class="form-control" name="last_name[]" type="text" placeholder="last name" />
            <button type="button" class="btn btn-success btn-lg btn-add">
                <span class="fas fa-plus" aria-hidden="true"></span>
            </button>
        </div>
        <div class="entry inline-form col-xs-12">
            <input class="typeahead form-control" name="first_name[]" type="text" placeholder="first name" />
            <input class="form-control" name="last_name[]" type="text" placeholder="last name" />
            <button type="button" class="btn btn-success btn-lg btn-add">
                <span class="fas fa-plus" aria-hidden="true"></span>
            </button>
        </div>
        <div class="entry inline-form col-xs-12">
            <input class="typeahead form-control" name="first_name[]" type="text" placeholder="first name" />
            <input class="form-control" name="last_name[]" type="text" placeholder="last name" />
            <button type="button" class="btn btn-success btn-lg btn-add">
                <span class="fas fa-plus" aria-hidden="true"></span>
            </button>
        </div>
    </div>
    <div class="col-md-12">
        <input id="submit" type="submit" value="submit" class="btn btn-primary" />
    </div>
</form>

这是JavaScript

$("#form1").submit(function(e) {
    e.preventDefault();
    var first_name = $('input[name="first_name[]"]')
        .map(function() {
            return this.value;
        })
        .get();

    var last_name = $('input[name="last_name[]"]')
        .map(function() {
            return this.value;
        })
        .get();

    var url = "https://script.google.com/macros/s/AKfycbztMLT-IofWxDIxm_K2bDhjyZZR1vOHz8OSc4Dupwle/dev?action=insertFormula&callback=insertFormulaSuccess";

    $.ajax({
        crossDomain: true,
        data: {
            first_name: first_name,
            last_name: last_name
        },
        url: url,
        method: "GET",
        dataType: "jsonp"
    });
});

function insertFormulaSuccess(data) {
    console.log(data);
}

这是代码。gs

function insertFormula(e) {
    var result = {};
    result.data = e;

    Logger.log(e.parameters.first_name[]); // syntax error
    Logger.log(e.parameters.last_name[]); // syntax error

    return ContentService.createTextOutput(
        e.parameter.callback + "(" + JSON.stringify(result) + ")"
    ).setMimeType(ContentService.MimeType.JAVASCRIPT);
}

0 个答案:

没有答案