Показать сообщение отдельно
  #4 (permalink)  
Старый 07.09.2019, 15:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$('#saddsite').on('submit', function(e){
e.preventDefault()
var data = new FormData();


а далее просто собрать поля, которые нужно оправить (те поля формы, которые имеют имя, то есть не требующие отправки их не должны иметь, та же кнопка submit к примеру.)

$.each(this.elements, function() {
    if(this.name) data.append(this.name, this.value)
});


разбрасывать все отдельно на два цикла нет ни какого смысла, единственно, что нужно сделать, так это проверить тип поля, и если это файл, то добавлять только в том случае, если файл выбран, то есть его value не пусто.

PS. То есть полно это так:

$('#saddsite').on('submit', function(e){
    e.preventDefault()
    var data = new FormData();
    $.each(this.elements, function() {
        if(this.name) {
            if(this.type=='file' && this.value) data.append(this.name, this.files[0]);
            else data.append(this.name, this.value);
        }
    });
    //если и это нужно form = 'addsite';, то
    data.append('form', this.id);
    $.ajax(
        //....
    )
});


Касаемо id юзера, чего там придумывать - отдавая страницу клиенту, помещайте в форму поле <input type="hidden" name="user" value="<?=$id>">.

Последний раз редактировалось laimas, 07.09.2019 в 16:19.
Ответить с цитированием