fronick7
@fronick7
Начинающий Front-End разработчик

Прошу помочь с формой обратной связи. Все вроде правильно, но данные в БД не отправляются. Кто может помочь?

Нужно создать форму обратной связи для сайта на PHP c полями Имя, Фамилия, Телефон, Почта и Текстовое поле. Полученные данные должны отправляться в БД через jQuery, а также возможность извлечения данных из базы с помощью jQuery. Вот код.....запускаю все это на Денвере. БД и таблицу создал, но данные туда не отправляются. И прошу помочь с извлечением данных.
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Тестовое задание</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
    <h1>Форма отправки</h1>
    <div id="output"></div>
    <div class="form">
      <form action="" method="post" name="form">
        <input id="name" type="text" name="name" placeholder="Имя" required="required"></input>
        <input id="surname" type="text" name="surname" placeholder="Фамилия" required="required"></input>
        <input id="tel" type="tel" name="tel" placeholder="+994XXXXXXXXX" required="required"></input>
        <input id="email" type="email" name="email" placeholder="example@example.com" required="required"></input>
        <textarea id="text" name="text" placeholder="Сообщение"></textarea>
        <input id="submit" type="submit" value="Отправить"></input>
      </form>
    </div>

    <script src="jquery-3.3.1.min.js"></script>
    <script src="form.js"></script>
  </body>
</html>

$(document).ready(function(){
  $("#submit").onclick(function(){
    alert("Hello!");

    var name = $("#name").val();
    var surname = $("#surname").val();
    var tel = $("#tel").val();
    var email = $("#email").val();
    var text = $("#text").val();

      $.ajax({
        method: "post",
        url: "main.php?",
        data: data
      });
  });
});

<?php
  $name = $_POST['name'];
  $surname = $_POST['surname'];
  $tel = $_POST['tel'];
  $email = $_POST['email'];
  $text = $_POST['text'];

  $connection = mysqli_connect("localhost", "root", "", "te_database");

  if(true) {
    mysqli_query($connection, "INSERT INTO `users` (`name`, `surname`, `tel`, `email`, `text`) VALUES ('$name', '$surname', '$tel', '$email', '$text')");
  }
?>
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
BRAGA96
@BRAGA96
// Вместо этого
$('#submit').onclick(function(){
	//...
});

// Используйте это
$('form[name="form"]').on('submit', function(event) {
	event.preventDefault();
	// Отправка формы будет работать по кнопке Отправить, по нажатию Enter
	// и не будет перезагружать страницу при отправке
	$.ajax({
		url: 'main.php',
		method: 'POST',
		// Метод jQuery для сериализации форм (https://api.jquery.com/serialize/)
		data: $(this).serialize(),
		success: function() {
			alert('Успех');
		},
		error: function() {
			alert('Ошибка');
		}
	});
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@bears
$.ajax({
    method: "post",
    url: "main.php?",
    data: data
});


Вот тут Вы отправляете на сервер неопределенную переменную data, соответственно ничего и не доходит.

UPD:
$("#submit").onclick(function()
а в этой строке используете несуществующую функцию onclick, а надо просто .click

UPD2:
а вот эта строка вообще интересная:
if(true) {...

Вам удалось переопределить константу? ;)
Ответ написан
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Потому что вы ничего не отправляете

$.ajax({
        method: "post",
        url: "main.php?",
        data: {
          name: name,
          surname: surname,
          tel: tel,
          email: email,
          text: text
        }
      });
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
чет излишне сложно, еще и данные пустые отправляете, гораздо проще можно же:
$(document).ready(function(){
  $("form").on('submit', function(e){
    e.preventDefault(); // тут у вас раньше уходило в перезагрузку
    var data = $(this).serialize(); // тут одним махом получаем данные формы
      $.ajax({
        method: "post",
        url: "main.php?",
        data: data
      });
  });
});

В принципе заглянуть в консоль было бы достаточно, как кандидат на работника вы должны знать такие вещи как отладка в консоли браузера.
Ответ написан
fronick7
@fronick7 Автор вопроса
Начинающий Front-End разработчик
Как вывести данные из бд обратно на страницу в виде таблицы?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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