Ajax - перенаправление при успехе

0

Я пытаюсь сделать валидацию для формы входа. Я делаю это, чтобы проверить базу данных для имени пользователя и пароля, и если этот пользователь не существует, чтобы показать сообщение, если он существует, перенаправлять на index.php. Я сделал это с помощью Ajax, но проблема в том, что он показывает мне сообщение об ошибке, но при попытке войти в систему как существующий пользователь показывает эту ошибку при проверке элемента

Uncaught TypeError: Cannot call method 'append' of null jquery-1.9.1.js:7985 и Uncaught TypeError: Cannot call method 'append' of null jquery-1.9.1.js:7985 Uncaught TypeError: Cannot read property 'settings' of undefined jquery.validate.js:332

script.js:

 $('#login_form').on('submit', function(e) {
        e.preventDefault();

        var username = $('#login_form input[name=username]').val();
        var password = $('#login_form input[name=password]').val();

        $.ajax({
          url: "login.php",
          type: "POST",
          data: {username: username,
                password: password},
          success: function(response) {
                 $('#invalid_content').html(response);  
                }
        });

        });

login_form.php

<form id="login_form" action="login.php" method="post">
        <div id="invalid_content" style="color: red"></div><br>
        <div class="control-group">
        <input autofocus id="username" name="username" placeholder="Username" type="text"/>          
           </div><br>
        <div class="control-group">
        <input id ="password" name="password" placeholder="Fjalekalimi" type="password"/>
        </div><br>
        <div class="control-group">
        <button type="submit" class="btn">Log In</button>
         </div>
        <br>                    
</form>

login.php

if ($_SERVER["REQUEST_METHOD"] == "POST")
    {      
        $rows = query("SELECT * FROM users WHERE username = ?", $_POST["username"]);

        if (count($rows) == 1)
        {
            $row = $rows[0];                            

            if (crypt($_POST["password"], $row["hash"]) == $row["hash"])
            {
                $_SESSION["id"] = $row["id"];                       
                echo json_encode(array('msg'=>"Success.", 'url'=>"/kinema/html/index.php", 'status'=>true));
            }


        }
        else if (($_POST["password"], $_POST["username"]) == null){
          echo json_encode(array('msg'=>"Username ose fjalekalimi jane te pavlefshem.", 'url'=>"", 'status'=>false));
        }
    }
    else
    {               
        echo json_encode(array('msg'=>"Username ose fjalekalimi jane te pavlefshem.", 'url'=>"", 'status'=>false));
    }

Консоль формы обработки:

<br />

    <font size='1'><table class='xdebug-error xe-parse-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Parse error: syntax error, unexpected ',' in C:\wamp\www\kinema\html\login.php on line <i>23</i></th></tr>
    </table></font>
Теги:

1 ответ

1
Лучший ответ

Попробуйте это, вы не сможете перенаправить изнутри страницы ajax, вместо этого вы можете следовать ниже,

       $('#login_form').on('submit', function(e) {
        e.preventDefault();

        var username = $('#login_form input[name=username]').val();
        var password = $('#login_form input[name=password]').val();

        $.ajax({
          url: "login.php",
          type: "POST",
          data: {username: username,
                password: password},
          dataType: 'json', // added json datatype
          success: function(response) {
                   if(response.status){ // if status is true then navigate into another page
                     window.location = response.url;
                   }else{ // if the status is false then render the error. 
                       $('#invalid_content').html(response.msg);  

                    }
                }
        });

    });

login.php:

    if ($_SERVER["REQUEST_METHOD"] == "POST")
        {      
            $rows = query("SELECT * FROM users WHERE username = ?", $_POST["username"]);
            if (count($rows) == 1)
            {
                $row = $rows[0];
                if (crypt($_POST["password"], $row["hash"]) == $row["hash"])
                {
                    $_SESSION["id"] = $row["id"];                       
                    echo json_encode(array('msg'=>"Success.", 'url'=>"/kinema/html/index.php", 'status'=>true));
                }
            }elseif (( ( !isset($_POST["password"]) && !isset($_POST["username"]) ) && trim($_POST["password"])=="" && trim($_POST["username"])=="") ) {
                    echo json_encode(array('msg'=>"Username and password are Empty", 'url'=>"", 'status'=>false));
            }else{
                  echo json_encode(array('msg'=>"OOps, there is some other issues!!", 'url'=>"", 'status'=>false));
              }
        }
        else
        {               
            echo json_encode(array('msg'=>"Username ose fjalekalimi jane te pavlefshem.", 'url'=>"", 'status'=>false));
        }


       ?>
  • 0
    это все еще ничего не делает. Когда я ввожу правильное имя и пароль, он не выполняет никаких действий
  • 0
    Вы проверили любую ошибку в консоли.
Показать ещё 15 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню