Отправить форму с использованием ajax: работало, теперь не работает?

#php #ajax

#php #ajax

Вопрос:

У меня есть следующая HTML-форма в signup.php:

 <form id="signup" action="" method="POST" autocomplete="off" autocomplete="false">
     <div class="signup_row action">
     <input type="text" placeholder="What's your Name?" name="name" id="name" class="signup" autocomplete="new-password" autocomplete="off" autocomplete="false" required />
     <input type="text" placeholder="Got an Email?" name="email" id="email" class="signup" autocomplete="new-password" autocomplete="off" autocomplete="false" required />
     <div class="g-recaptcha" style="margin-top:30px;" data-sitekey="6LeCkZkUAAAAAOeokX86JWQxuS6E7jWHEC61tS9T"></div>
     <input type="submit" class="signup_bt" name="submit" id="submt" value="Create My Account">
     </div> 
 </form>
  

Я пытаюсь отправить форму с помощью ajax, без обновления страницы:

 <!-- include files -->
<?php include 'assets/config.php';?>
<?php if(isset($_SESSION["CUSTOMER_ID"])){
header('Location: myaccount.php'); } ?>  


    <script>
      $(function () {

        $('form').on('submit', function (e) {      

          e.preventDefault();

          $.ajax({
            type: 'post',
            url: 'do_signup_check.php',
            data:{"name":name,"email":email},
            success: function () {
            if(result == 0){    
                $('.signup_side').fadeOut(500).promise().done(function() {
                $('.signup_side').load('do_signup.php',function(){}).hide().fadeIn(500);
            });
            }else{
                $('.signup_side').fadeOut(500).promise().done(function() {
                $('.signup_side').load('assets/login.php',function(){}).hide().fadeIn(500);
            }         
          });
        });
      });
    </script>
  

Я отправляю форму в do_signup_check.php и запускаю запрос, чтобы узнать, зарегистрирован ли пользователь уже. echo 1 для положительного результата и 0 для отрицательного результата:

Do_Signup_Check.php:

 <?php
    session_start();        
    require 'assets/connect.php';


    $myName=$_POST["name"];
    $myEmail=$_POST["email"];

    $check = mysqli_query($conn, "SELECT * FROM user_verification WHERE email='".$myEmail."'");

    if (!$check) {
    die('Error: ' . mysqli_error($conn)); }

    if(mysqli_num_rows($check) > 0){
        echo '1';
    }else{  
        echo '0';
    }

?>
  

Если результат равен 0, то ajax должен загрузить мою страницу do_signup.php.
Но, увы, это не заходит так далеко. Это работало, а затем я выключил компьютер и вернулся к нему, и теперь это не будет работать.

Пожалуйста, кто-нибудь может показать мне, где я ошибся?

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

1. Итак, что вы изменили?

2. Есть ли ошибки в консоли вашего браузера? Единственное, что вы делаете неправильно, это напрямую вставляете значения в инструкции SQL, используйте подготовленные инструкции.

3. Вы не присваиваете значения переменным name и email в вашем javascript.

4. Изменить data:{"name":name,"email":email}, на data:{name:name, email:email},

5. Кроме того, весь ваш первый PHP-скрипт зависит от переменной сеанса CUSTOMER_ID; верните что-нибудь, если этого нет, чтобы проверить это.

Ответ №1:

if(result == 0){ здесь результат не используется в функции успеха:

вам, должно быть, нужно передать результирующую переменную здесь:

 success: function () {
  

как:

 success: function (result) {
  

Теперь вы можете использовать свое условие if(result == 0){

Во-вторых, я предлагаю вам передать dataType: 'html' свой ajax-запрос.

Редактировать:

Вы используете <?php if(isset($_SESSION["CUSTOMER_ID"])){ строку в своем коде, если вы не используете session_start() в своем коде, то эта проверка не сработает.

Для этой строки data:{"name":name,"email":email}, я не видел name и email в вашем коде, где вы определяете эти 2 переменные, которые вы используете в своих параметрах ajax.