Проблемы с сохранением страницы с помощью ajax

У меня есть форма. Моя цель - отправить и вставить значения формы в мою базу данных. потом

  1. Очистить ввод формы
  2. Покажите успешное сообщение. Как это:

Проблемы с сохранением страницы с помощью ajax

Проблемы с сохранением страницы с помощью ajax

Мои проблемы: Когда я нажимаю кнопку «сохранить», меня перенаправляют на другую страницу.

Это операционная ошибка:

Проблемы с сохранением страницы с помощью ajax

и смените страницу

Проблемы с сохранением страницы с помощью ajax

¿В чем проблема моего кода?

html

<html>
<head><title>Insert Data Into MySQL: jQuery + AJAX + PHP</title></head>
<body>

<form id = "myForm" action = "userInfo.php" method = "post">
Name: <input type = "text" name = "name" /><br />
Age : <input type = "text" name = "age" /><br />
<button type = "submit" id = "sub">Save</button>
</form>

<span id = "result"></span>

 <script src = "script/jquery-1.8.1.min.js" type = "text/javascript"></script>
<script src = "script/elscript.js" type = "text/javascript"></script>
 <script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js">
</script>
</body>
</html

Это мой сценарий

$("#myForm").submit( function(e) {

// Prevent the normal form submission event
e.preventDefault();

// Create an object of the form
var form = $(this);

// Make an AJAX request
$.post(this.action, form.serializeArray(), function(info) {

    // Clear the form
    form[0].reset();

    // Display message
    $("#result").html(info); 

});

});

Наконец, мой код для вставки

   <?php 
        $conn = mysql_connect('localhost', 'root', '');
        $db   = mysql_select_db('practicas');

        $name = $_POST['name'];
        $age = $_POST['age'];

        if (mysql_query("INSERT INTO ajaxtabla VALUES('$name', '$age')"))
      echo "Successfully Inserted";
    else
      echo "Insertion Failed";
 ?>

Спасибо за помощь мне

mysql_ давно мертв, используйте mysqli_ - или лучше PDO. И узнайте про SQL-инъекция и подготовленные заявления.

Mikey 17.03.2018 17:14

прости Майки, в моем университете нас ничему этому не учат. Я должен искать вещи, чтобы сделать домашнюю работу. по этой причине я ничего не понимаю, у меня и у моих коллег плохая база программирования

Vidal 17.03.2018 17:21

правильно ли вы включили файлы сценариев?

Sysix 17.03.2018 17:34

Что ты имеешь в виду??

Vidal 17.03.2018 17:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
33
2

Ответы 2

Вы можете упростить код, используя только один обработчик событий при отправке формы. Кроме того, вам необходимо включить e.preventDefault(), который предотвращает нормальную работу кнопки отправки.

$("#myForm").submit( function(e) {

    // Prevent the normal form submission event
    e.preventDefault();

    // Create an object of the form
    var form = $(this);

    // Make an AJAX request
    $.post(this.action, form.serializeArray(), function(info) {

        // Clear the form
        form[0].reset();

        // Display message
        $("#result").html(info); 

    });

});

Также дайте вашей кнопке атрибут type, чтобы ваша форма отправлялась при нажатии.

<button type = "submit" id = "sub">Save</button>

Демо

$(function() {
  $("#myForm").submit(function(e) {

    // Prevent the normal form submission event
    e.preventDefault();
    
    console.info('onsubmit event handler triggered');

    // Create an object of the form
    var form = $(this);

    // Make an AJAX request
    /*$.post(this.action, form.serializeArray(), function(info) {

      // Clear the form
      form[0].reset();

      // Display message
      $("#result").html(info);

    });*/
    
    // fake AJAX request
    setTimeout(function(){
       // Clear the form
      form[0].reset();
      // Display message
      $("#result").html('Successfully Inserted');
    }, 3000);
  });

});
<form id = "myForm" action = "userInfo.php" method = "post">
  Name: <input type = "text" name = "name" /><br /> Age : <input type = "text" name = "age" /><br />
  <button type = "submit" id = "sub">Save</button>
</form>

<span id = "result"></span>

<script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>

Благодарность!! но меня это не держит на странице, постоянно меняется :(

Vidal 17.03.2018 16:59

прости Майки, я плохой программист, но это не работает. Я меняю свой код в вопросе, вы его видите? спасибо за помощь

Vidal 17.03.2018 17:16

@Vidal Откройте свой инструменты разработчика браузера, проверьте консоль и посмотрите, есть ли у вас ошибки. Вы должны использовать только сценарий jQuery один, и он должен быть помещен в ваш сценарий перед.

Mikey 17.03.2018 17:23

хорошо. Моя консоль говорит, что у меня проблема: GET http://localhost/PracticaAjax/script/elscript.js net::ERR_ABORTED это важно?

Vidal 17.03.2018 17:33

@ Видаль Конечно. Это означает, что он не может найти ваш сценарий. Вставьте URL-адрес в свой браузер и посмотрите, загрузится ли он. Если не может, выясните, почему это, например, неправильное имя файла, неправильное расположение и т. д.

Mikey 17.03.2018 17:56

не беда, оставляю, ищу другое, спасибо :)

Vidal 17.03.2018 18:00

В ajax вы публикуете форму с ее действием, поэтому она будет перенаправлена, подтвердите Если вы не хотите перенаправлять, отправьте запрос ajax следующим образом

$.ajax({
method:post,
url:"File name you want to send request"

}).done(function(response){

});

Другие вопросы по теме