Ajax 之前的 JQuery .each 处理

Posted

技术标签:

【中文标题】Ajax 之前的 JQuery .each 处理【英文标题】:JQuery .each processing before Ajax 【发布时间】: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 【参考方案1】:

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

【讨论】:

以上是关于Ajax 之前的 JQuery .each 处理的主要内容,如果未能解决你的问题,请参考以下文章

Jquery each ajax 赋值

jQuery 在 .ajax 成功时继续下一个循环(.each)

当 $.each 和 array.splice(i) 保持在一起时,JQuery 处理数组超出索引错误

jQuery 全局 ajax 错误处理程序在“本地”之前触发

jquery ajax添加元素事件无效,each,on函数参考

jquery 对ajax数据each如何判断数据长度并加换行拼接加载到表格中