2016-10-14 4 views
0

У меня есть form, который отправляет данные на сервер. Когда форма является обычным HTML, она отлично работает. Все данные отправляются на сервер без ошибок. Однако, когда я меняю форму на использование AJAX, я получаю сообщение об ошибке.Ajax form send error

<form id="form" action="handler.php" method="POST"> <!-- it's work --> 
    <input id="contact_name" type="text" name="name" placeholder="NAME"> 
    <input id="contact_phone" type="text" name="phone" placeholder="PHONE"> 
    <button type="submit">Get call</button> 
</form> 
$(document).ready(function() { 
    /*this does not work*/ 
    $('#form').on('submit', function(e) { 
     var dataf = $(this).serialize(); 
     $.ajax({ 
      url: 'handler.php', 
      type: 'POST', 
      data: dataf, 
      success: function(response) { 
       console.log(JSON.stringify(response)); 
      }, 
      error: function(response) { 
       console.log(JSON.stringify(response)); 
      } 
     }); 
    }); 
}); 

В консоли я получаю это:

{"readyState":0,"responseText":"","status":0,"statusText":"error"} 
+1

какая у вас ошибка? не могли бы вы опубликовать эту ошибку? –

+0

use 'contentType:" application/json; charset = utf-8 ", dataType:" json ",' in ajax –

+0

@AtalKishore почему? Он отправляет сериализованные данные формы –

ответ

0

Вы должны добавить e.preventDefault();

$(document).ready(function(){/*this does not work*/ 
    $('#form').on('submit', function(e) { 
    e.preventDefault(); 
    var dataf = $(this).serialize(); 
     $.ajax({ 
     url: 'handler.php', 
     type: 'POST', 
     data: dataf, 
     success: function(response) { 
      console.log(JSON.stringify(response)); 
     }, 
     error: function(response) { 
      console.log(JSON.stringify(response)); 
     } 
     }); 
    }); 
}); 
+1

Как это изменит результат вызов '$ .ajax()'? – Andreas

+0

Это просто неправильно. Арсалан сделал то же самое. Нажав кнопку, форма отправляется кнопкой и отправляется на handler.php. Если тогда все еще ошибка, мы должны знать код из handler.php. – zuluk

+0

это правда! и это работа ... но я не понимаю, почему? является важной частью ajax-запроса 'preventDefault'? –

0

<button type="submit">Get call</button>

должен быть

<button type="button">Get call</button>

Поскольку вы отправляете его вручную через jQuery.

+0

'e.preventDefault();' необходимо, если вводится тип buttin, измените тип кнопки на простую кнопку, и вам не понадобится 'e.preventDefault();' – Arsalan