@kat-vetal

Ajax выдает ошибку и статус 200?

Добрый день. Помогите разобраться.
Есть форма
<form  id="feedback">
  <div class="form-group">
    <label>Name</label>
    <input type="text" class="form-control" id="name">
  </div>
  <div class="form-group">
    <label>email</label>
    <input type="email" class="form-control" id="email" >
  </div>
  <div class="form-group">
    <label>theme</label>
    <input type="text" class="form-control" id="theme" >
  </div>
  <div class="form-check">
    <label>
      massage
    </label>
    <textarea id="message" class="form-control"></textarea>
  </div>

  <button type="submit" class="btn btn-primary">Submit</button>
</form>

есть ajax запрос
$(document).ready(function(){
		
		$('button').on('click', function(e){
			e.preventDefault();
			
				sendMessage();
	
		});

		function sendMessage()
		{
			var user_name = $('#name').val(),
				user_email = $('#email').val(),
				user_theme = $('#theme').val(),
				user_message = $('#message').val();
			$.ajax({
				url: 'action.php',
				type: 'POST',
				dataType: 'JSON',
				data: {
					name: user_name,
					email: user_email,
					theme: user_theme,
					message: user_message
				},
				success: function(data){
						alert('done');
				},
				error: function(request, status, error){
					var statusCode = request.status; // вот он код ответа
					console.log(statusCode);
				}
			})
		}
	})

и есть файл action.php который обрабатывает ajax и должен записывать в базу
$name = $_POST['name'];
$email = $_POST['email'];
$theme = $_POST['theme'];
$message = $_POST['message'];

$db_host = "*****"; 
$db_user = "*****"; 
$db_password = "******"; 
$db_table = "feedback";     


$db = mysql_connect($db_host,$db_user,$db_password) OR DIE("Не могу создать соединение ");
// Выборка базы
mysql_select_db("*****_db",$db);
 
mysql_query ("INSERT INTO feedback (name, email, theme, message,) VALUES ('$name', '$email', '$theme', '$message')");

во время выполнения ajax отрабатывает error: и в консоль выводит статус 200 и в базу ничего не записывается
  • Вопрос задан
  • 1178 просмотров
Решения вопроса 1
@grisha2217
Давайте начнём с того, как должен выглядеть обработчик формы:
1. Событие должно вешаться на форму, а не на кнопку - $('#feedback').on('submit', ...)
2. Оставляете строчку preventDefault
3. У каждого инпута ставите атрибут name
4. В параметре data пишите $(this).serializeArray() - все инпуты с нейм будут сериализованы в массив и отправлены на сервер, где будут видны через $_POST

Дальше через var_dump в php смотрите значения переменных, скул выдаст ошибку, если что-то пойдёт не так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
megafax
@megafax
web-программист
dataType: 'JSON',
А у Вас что в ответе приходит из php? Сделайте ответ этого типа и будем Вам success
и ко всему этому рекомендации от grisha2217
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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