jQuery使用Ajax请求的select查找所有输入类型

时间:2018-11-12 09:00:42

标签: javascript jquery ajax

我试图通过在找到输入并选择要更新的元素之后使用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')
            }
        }
    });

});

但是得到一些未定义的参数,如下所示:

enter image description here

但是我想要除未定义之外的纯参数

2 个答案:

答案 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());
    }
});