Почему не отправляется форма через ajax, не передается изображение?

Суть вопроса такова через форму не передается изображение , текст передается

<form id="myform"  action='' method='post' enctype="multipart/form-data">	
		  <input type="hidden" name="action" value="do">
		  
		<input type="text"  name="text"/>
		
        <input type="file" name="file"  />

		<input type="submit" id="btncontcall" value=" Ok "/>		

      </form>

$(document).ready(function() {
         $('#btncontcall').click(function(){ 
              $.ajax({
                 type: "POST",
                 url:"bot_send.php", // Адрес обработчика
                 data:$('#myform').serialize(),
                 error:function(){$("#erconts").html("<span class='erconts'>Ошибка!</span>");},
         		beforeSend: function() {
                     $("#erconts").html("<span class='erconts'>Отправляем...</span>");
                 },
         		success: function(result){
					$('#myform')[0].reset();
         			$('#erconts').html(result);
         			checkThis();
         		}
             });
             return false;
         });
		});
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 3
inkShio
@inkShio
Метод .serialize() возвращает строку пригодную для передачи через URL строку. Данные могут собираться с многих объектов jQuery, включая input, textarea, и select. Гугли FormData
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Вот эту конструкцию в коде:
$('#myform').serialize()
Замени на:
new FormData($('#myform')[0])
И тогда все заработает.
Ответ написан
boykopetro
@boykopetro Автор вопроса
Так сработало
(function ($) {
$("#myform").submit(function (event) {
  event.preventDefault();
  $.ajax({
    url: "/bot_send.php",
    type: "POST",
    data: new FormData($('#' + $(this).attr('id'))[0]),
    processData: false,
    contentType: false,
                 error:function(){$("#erconts").html("<b style='color: red;'>Сталася помилка!</b>");},
         		beforeSend: function() {
                     $("#erconts").html("<b>Відправляєм дані...</b>");
                 },	
         		success: function(result){
					$('#myform')[0].reset();
         			$('#erconts').html(result);
         			checkThis();
         		},
      });

});
  
}(jQuery));

       $("#answer").keyup(function(event){
    if(event.keyCode == 13){
        $("#btncontcall").click();
       } });
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы