Javascript jQuery使用select for ajax请求查找所有输入类型
我试图执行一个ajax请求,在找到输入并选择要更新的元素后,使用jquery each循环设置FormData,如下所示:Javascript jQuery使用select for ajax请求查找所有输入类型,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图执行一个ajax请求,在找到输入并选择要更新的元素后,使用jquery each循环设置FormData,如下所示: $(document).on("click", ".update", function (e) { e.preventDefault(); e.stopPropagation(); let thisBtn = $(this); //Form Data let formData = new FormData(); let th
$(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')
}
}
});
});
$(文档)。在(“单击”,“更新”,函数(e){
e、 预防默认值();
e、 停止传播();
设thisBtn=$(this);
//表单数据
设formData=new formData();
设thisRow=thisBtn.最近(“tr”);
thisRow.find(“输入,选择”).each(函数(){
//console.log(this.value)
append($(this.attr('name'),$(this.val());
});
$.ajax({
类型:“POST”,
url:“检查/更新”,
数据:formData,
processData:false,
contentType:false,
成功:功能(数据){
如果($.trim(数据)=“是”)
{
警报(“成功!记录更新成功”);
}
其他的
{
警报('错误!记录未成功更新')
}
}
});
});
但是得到一些未定义的参数,如下所示:
$(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')
}
}
});
});
但是我想要纯参数,除了未定义的这段代码似乎在查找输入/选择未定义的名称属性,如何解释在formData中获得未定义值的事实
thisRow.find("input,select").each(function() {
//alert(this.value)
formData.append($(this).attr('name'), $(this).val());
});
thisRow.find("input,select").each(function() {
//alert(this.value)
if($(this).attr('name'))
{
formData.append($(this).attr('name'), $(this).val());
}
});
我建议您在添加到formData之前检查名称是否未定义
thisRow.find("input,select").each(function() {
//alert(this.value)
formData.append($(this).attr('name'), $(this).val());
});
thisRow.find("input,select").each(function() {
//alert(this.value)
if($(this).attr('name'))
{
formData.append($(this).attr('name'), $(this).val());
}
});
这段代码似乎是在查找输入/选择未定义的name属性,如何解释在formData中获得未定义值的事实
thisRow.find("input,select").each(function() {
//alert(this.value)
formData.append($(this).attr('name'), $(this).val());
});
thisRow.find("input,select").each(function() {
//alert(this.value)
if($(this).attr('name'))
{
formData.append($(this).attr('name'), $(this).val());
}
});
我建议您在添加到formData之前检查名称是否未定义
thisRow.find("input,select").each(function() {
//alert(this.value)
formData.append($(this).attr('name'), $(this).val());
});
thisRow.find("input,select").each(function() {
//alert(this.value)
if($(this).attr('name'))
{
formData.append($(this).attr('name'), $(this).val());
}
});
在没有看到HTML的情况下,我们无法确切地告诉您原因,但从输出中可以清楚地看到,表单中有一些
输入
和/或选择
元素没有名称
或值
。它们可能是隐藏的,因此请检查DOM检查器以查找并删除它们
如果不想修改HTML,则可以使用属性选择器仅查找输入
和选择具有名称
的元素,如下所示:
let $thisBtn = $(this);
let formData = new FormData();
let $thisRow = $thisBtn.closest("tr");
$thisRow.find("input[name], select[name]").each(function() {
formData.append(this.name, $(this).val());
});
在没有看到HTML的情况下,我们无法确切地告诉您原因,但从输出中可以清楚地看到,表单中有一些输入
和/或选择
元素没有名称
或值
。它们可能是隐藏的,因此请检查DOM检查器以查找并删除它们
如果不想修改HTML,则可以使用属性选择器仅查找输入
和选择具有名称
的元素,如下所示:
let $thisBtn = $(this);
let formData = new FormData();
let $thisRow = $thisBtn.closest("tr");
$thisRow.find("input[name], select[name]").each(function() {
formData.append(this.name, $(this).val());
});