【发布时间】: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