【问题标题】:JQuery .each processing before AjaxAjax 之前的 JQuery .each 处理
【发布时间】:2020-02-23 05:33:45
【问题描述】:

我有一个 Javascript (Jquery) 函数,它遍历表单中的输入元素,将数组以字符串方式组装成 JSON,然后将其发布到 AJAX 端点。 each 在 AJAX 调用之后运行,我不确定在 each 之后调用 AJAX 端点最被接受的方法是什么。

我的功能:

function FormHandler() {
    var data = [];
    $("form#myForm :input").each(function () {
        var input = $(this);
        var field_key = input[0]['name'].substr(4);
        var value = input[0]['value'];
        data[field_key] = value;
        console.log(data);
    });
    $.ajax({
        dataType: "json",
        url: 'https://myendpoint.xxx/v1/' + pathname,
        type: 'POST',
        data: {'data': JSON.stringify(data)},
        success: function (thisdata) {
            console.log(thisdata);
        }
    });
};

调用此 AJAX 会以 JSON 格式发送一个空数据数组,但 foreach 中的控制台日志会显示数据元素在每一轮都按下一个输入值增长。我曾尝试在每个函数的第一个函数之后将 AJAX 调用放在一个函数中,但这不起作用。

感谢指点。

【问题讨论】:

  • 您是否尝试过在迭代开始之前和之后添加跟踪。您发布的代码中唯一的异步部分是 ajax 执行。
  • 您可以使用 formdata 对象或 serialize 或 SerializeArray ,只需在 post 中发送,无需 stringify

标签: javascript jquery ajax each synchronous


【解决方案1】:

您需要将var data = [] 更改为var data = {}。 在 each-loop 中,您将属性添加到数组中,JSON.stringify 不支持该数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2013-08-31
    • 1970-01-01
    • 2012-01-18
    相关资源
    最近更新 更多