JQuery найти все типы ввода с помощью выбора для запроса AJAX - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь выполнить ajax-запрос, устанавливая FormData, используя jquery каждый цикл после нахождения ввода и выбирая элемент для обновления следующим образом:

$(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 голосов
/ 12 ноября 2018

Не видя ваш HTML, мы не можем точно сказать, почему, но из вывода ясно, что в вашей форме есть элементы input и / или select, которые не имеют name или value. Они, вероятно, скрыты, поэтому проверьте инспектора DOM, чтобы найти и удалить их.

Если вы не хотите вносить изменения в HTML, то вы можете использовать селектор атрибутов, чтобы найти только элементы input и select, которые имеют name, например:

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());
});
0 голосов
/ 12 ноября 2018

Кажется, что этот фрагмент кода находит входные данные / выбирает, какой атрибут имени не определен, что объясняет тот факт, что вы получаете неопределенные значения в 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());
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...