【发布时间】:2020-04-12 23:22:34
【问题描述】:
我有一个向我的表单添加新字段的按钮,以及另一个将输入字段的值提交到服务器端 (php) 的按钮。 我正在尝试获得将值从动态创建的表单输入发送到 php 的最佳方式。
这是我尝试过的
$('#submit').on("click", function(e) {
e.preventDefault();
for(var i = 1; i <= 9; i++) {
if ($('label[name="men'+i+'"]').length) { //for each [i] check if man field exist
var manName = $('select[id="manName'+i+'"]').val();
var manAge = $('select[id="manAge'+i+'"]').val();
if (manName.length < 1) {
//show input error on the form
} else {
//set value for each manName field created
window["manName" + i] = manName;
}
if (manAge.length < 1) {
//show input error on the form
} else {
//set value for each manAge field created
window["manAge" + i] = manAge;
}
}
} else {
//if man field [i] was not created
window["manName" + i] = "";
window["manAge" + i] = "";
//set man field [i] to empty/null
}
//and more of the above to check for women and children fields
}
然后在我的ajax中我有
$.ajax
({
type:"POST",
url: "send.php",
data: {"manName1": manName1, "manAge1": manAge1, "manName2": manName2, "manAge2": manAge2, "manName3": manName3, "manAge3": manAge3, "womanName1": womanName1, "womanAge1": womanAge1, "womanName2": womanName2, "womanAge2": womanAge2 }, //and so on for the rest of the women and children
//cache: false,
success: function(data) {
console.log(data)
}
});
这有效,但在响应之前会冻结一段时间。
那么有没有合适的方法呢
【问题讨论】:
-
它以什么方式“冻结”?服务器是否需要很长时间才能响应?还是客户端代码锁定了浏览器片刻?
-
是的客户端,在浏览器控制台中出现此错误“未捕获 RangeError:超出最大调用堆栈大小”
-
这意味着您在代码中的某个地方进行了一些无限递归调用。您可以在导致此错误的调用函数中设置断点以找出问题所在。
标签: javascript jquery ajax