我试图通过在找到输入并选择要更新的元素之后使用jquery在每个循环中设置FormData来执行ajax请求,如下所示:
$(document).on("click", ".update", function (e) {
e.preventDefault();
e.stopPropagation();
let thisBtn = $(this);
//Form Data
let formData = new FormData();
let thisRow = thisBtn.closest("tr");
thisRow.find("input,select").each(function() {
//console.log(this.value)
formData.append($(this).attr('name'), $(this).val());
});
$.ajax({
type: "POST",
url: '<?php echo base_url()?>exam/update',
data: formData,
processData: false,
contentType: false,
success:function(data){
if($.trim(data)=='yes')
{
alert('Success! Record updated successfully');
}
else
{
alert('Error! Record not updated successfully')
}
}
});
});
但是得到一些未定义的参数,如下所示:
但是我想要除未定义之外的纯参数
答案 0 :(得分:3)
没有看到您的HTML,我们无法确切告诉您原因,但是从输出中很明显,您的表单中有一些input
和/或select
元素,但没有{{1} }或name
。它们可能是隐藏的,因此请检查DOM检查器以找到并删除它们。
如果您不想修改HTML,则可以使用属性选择器仅找到具有value
的{{1}}和input
元素,如下所示:< / p>
select
答案 1 :(得分:2)
似乎这段代码正在查找输入/选择未定义的name属性,这将解释您在formData中获得未定义值的事实。
thisRow.find("input,select").each(function() {
//alert(this.value)
formData.append($(this).attr('name'), $(this).val());
});
我建议您在添加到formData之前检查名称是否未定义。
thisRow.find("input,select").each(function() {
//alert(this.value)
if($(this).attr('name'))
{
formData.append($(this).attr('name'), $(this).val());
}
});