Отправить форму, используя ajax: Работал, а теперь не работает? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть следующая 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 Ответ

1 голос
/ 27 марта 2019

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

здесь необходимо передать результирующую переменную:

success: function () {

как:

success: function (result) {

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

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

Edit:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...