Проблема с отправкой данных в базу данных с помощью jquery ajax

#php #jquery #ajax

#php #jquery #ajax

Вопрос:

Я несколько раз просматривал учебные пособия, и мне трудно понять, где мой код неверен. Я могу запустить свой php-файл и отправить свою информацию в свою базу данных, поэтому я знаю, что проблема не в моем подключении, поэтому я думаю, что это мой index.html досье. Возможно, это как-то связано с тем, как я пытался реализовать jquery, но я об этом тоже не знаю

Index.html

  <!DOCTYPE html>
<html lang="en">
<head>
  
  <link rel="stylesheet" href="login.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    
    <script>
    $(document).ready(function(){
      $('#login').click(function(event){
        event.preventDefault();
          var username =$('#use').val();
          var pass = $('#pass').val();
  
          $.ajax({
              url: 'login.php',
              method:'POST',
              data:
              {
                  User: username,
                  Pass: pass
              },
              success:function(result){
                  alert(result);
              }
          });
      });
  });</script> 
</head>
<body>
    <div class="login-page">
        <div class="form">
          <form class="register-form">
            <input type="text" placeholder="name"/>
            <input type="password" placeholder="password"/>
            <input type="text" placeholder="email address"/>
            <button>create</button>
            <p class="message">Already registered? <a href="#">Sign In</a></p>
          </form>
          <form class="login-form">
            <input type="text" id="use" placeholder="username"/>
            <input type="password" id="pass" placeholder="password"/>
            <button type="submit" id="login">login</button>
            <p class="message">Not registered? <a href="#">Create an account</a></p>
          </form>
        </div>
      </div>
</body>
</html>

  

PHP-код, подключающийся к моей БД

 <?php
$dbname = 'project test';
$dbuser = 'root';
$dbpass = '';
$dbhost = 'localhost';

$username=$_POST['use'];
$password=$_POST['pass'];

$conn= mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  } 

$sql = "INSERT INTO user (User, Pass)
    VALUES ('{$username}','{$password}')";

if ($conn->query($sql) === TRUE) {
  echo "New record created successfully";
} else {
  echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close(); ;

?>
  

Комментарии:

1. В вашем коде, который вы передаете User , и Pass в вашем ajax есть опечатка, и вы получаете ее с помощью $_POST['use'] , $_POST['pass'] .. и т. д. т. Е.: User != use и то же самое для других.

2. В вашем коде возможны широко открытые SQL-инъекции, НЕ используйте их в производстве.

3. Это только для теста. Я пока даже не могу получить данные формы, поэтому не смог даже учесть безопасность.

4. Используйте встроенный PDO php.net/manual/en/intro.pdo.php

Ответ №1:

В вашем index.html файл, который вы отправляете User и Password значения Однако, когда вы пытаетесь получить их в своем php-файле, вы пытаетесь получить use и pass значения. Их имена не совпадают. Имена должны совпадать, чтобы правильно получить значения.

Комментарии:

1. Итак, я сопоставил файлы php с тем, что находится в моем файле ajax, но по-прежнему ничего не происходит при нажатии кнопки.