@NeveR3d

Форма обратной связи и файл ajax?

Не могу понять, почему файл не отправляется через ajax
$("#feedback-form").submit(function() {
		var str = $(this).serialize();
		$.ajax({
			type: "POST",
			url: "contact.php",
			data: str,
			success: function(msg) {
				if(msg == 'ok') {
					$('.close, .overlay').css('opacity','1');
					$('.close, .overlay').css('visibility','visible');
					$('.close, .overlay').css('display','block');
					$('#page-input').css({'opacity':'0','visibility':'hidden'});
				}
				else {
					$('.close .window').html('<h5>Ошибка</h5><p>Сообщение не отправлено, убедитесь в правильности заполнение полей</p>');
					$('.close, .overlay').css('opacity','1');
					$('.close, .overlay').css('visibility','visible');
					$('.close, .overlay').css('display','block');
					$('#page-input').css({'opacity':'0','visibility':'hidden'});
				}
			}
		});
		return false;
	});
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ответы на вопрос 1
@m_pchelnikov
Как-то так:
$("#feedback-form").submit(function(event) {
    event.preventDefault();
    var data = new FormData;

    $.each($('[type="file"]').prop('files'), function (k, v) { // Добавляем файлы
        data.append('fileFF[]', files[k]);
    });

    $.each($('form')[0], function (k, v) { // Добавляем все поля, кроме файлов
        var title = $(this).closest('form')[0][k].name;
        if (title != 'files') {
            data.append(title, $('form')[0][k].value);
        }
    });

    $.ajax({
      type: "POST",
      url: "contact.php",
      data: data,
      processData: false,
      contentType: false,
      success: function(msg) {
        if(msg == 'ok') {
          $('.close, .overlay').css('opacity','1');
          $('.close, .overlay').css('visibility','visible');
          $('.close, .overlay').css('display','block');
          $('#page-input').css({'opacity':'0','visibility':'hidden'});
        }
        else {
          $('.close .window').html('<h5>Ошибка</h5><p>Сообщение не отправлено, убедитесь в правильности заполнение полей</p>');
          $('.close, .overlay').css('opacity','1');
          $('.close, .overlay').css('visibility','visible');
          $('.close, .overlay').css('display','block');
          $('#page-input').css({'opacity':'0','visibility':'hidden'});
        }
      }
    });
    return false;
  });
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы