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 在 .ajax 成功时继续下一个循环(.each)
当 $.each 和 array.splice(i) 保持在一起时,JQuery 处理数组超出索引错误
jQuery 全局 ajax 错误处理程序在“本地”之前触发