简体   繁体   English

jQuery AJAX Getting json parseError in the console and responses goes to error function but php script runs fine

[英]jQuery AJAX Getting json parseError in the console and responses goes to error function but php script runs fine

I tried researching a lot before posting here.在发布到这里之前,我尝试了很多研究。

There are two files login.php and login-validation.php有两个文件 login.php 和 login-validation.php

  1. Login.php file contains code including login form and jQuery AJAX script to call login.validation.php Login.php 文件包含代码,包括登录表单和 jQuery AJAX 脚本调用 login.validation.ZE1BFD762321E491CEE4AC

--- Code of login.php --- --- 登录代码.php ---

    $(document).ready(function() {
        $('#login-form').submit(function(e) {

            e.preventDefault();

            mobile_no = $('#mobile_no').val();
            upassword = $('#upassword').val();

            console.log(mobile_no, upassword);

            $.ajax({
                type: "POST",
                url: "server/login-validation.php",
                data: {
                    Mobile_no: mobile_no,
                    Password: upassword
                },
                cache: false,
                dataType:'json',
                success: function(response) {
                    console.log("Data gone successfully");
                    if(response["type"] == 'LoginSuccess'){
                        $('#success-message').text(response); // This works but not below ones
                    }
                    if(response["type"] == 'WrongCredentials'){
                        $('#success-message').text(response);
                    }
                    else{
                        $('#success-message').text(response);
                    }

                },

                error: function(xhr, textStatus, errorThrown){
                    console.log(xhr.responseText); Shows my echo message i.e. Wrong credentials for wrong credentials
                    console.log(textStatus); // Shows parseError
                    console.log(errorThrown); // Shows SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
                }
            });
        });
    });
</script> 

---Code of login.validation.php--- --- login.validation.php 的代码---

session_start();
$message = array(); //Creating array variable to display custom messages depending on [TYPE]
//Require DB

require_once('db.php');

//Get values from the login form

$Mobile_number = $mysqlconnect->real_escape_string(trim($_POST['Mobile_no']));
$Password = $mysqlconnect->real_escape_string(trim($_POST['Password']));


//Query database for valid input match

$validation = "SELECT * from team_captain WHERE Mobile_Number = '$Mobile_number'";

$query = $mysqlconnect->query($validation);

$result = mysqli_num_rows($query);

if($result > 0){
    $fetch_pass = mysqli_fetch_array($query);
    $password_hash = $fetch_pass['User_Password'];
    if(password_verify($Password,$password_hash))
    {
        $message["type"] = 'LoginSuccess';   
        $_SESSION['sess_username'] = $fetch_pass['Full_Name'];  
          
    }
    else{

        $message["type"] = 'WrongCredentials';
        echo "Wrong credentials". $mysqlconnect->error;
        
    }
}
else{
    $message["type"] = 'WrongMobile';
    echo "Mobile number doesn't exists";    
}

header('Content-type: application/json');
echo json_encode($message);
?>

Tried dataType: 'json' - Didn't work试过 dataType: 'json' - 没用

Tried without dataType - Didn't work没有 dataType 试过 - 没用

Php script is running properly with right error messages for different "if" statements but AJAX responses goes to error:function() rather than success: function() Php 脚本正常运行,并针对不同的“if”语句提供正确的错误消息,但 AJAX 响应转到错误:函数()而不是成功:函数()

In the network tab - The response type is JSON and it displays [type] ie [WrongCredentials]在网络选项卡中 - 响应类型为 JSON 并显示 [type] 即 [WrongCredentials]

Not understanding what is wrong here.不明白这里有什么问题。 Any help would be appreciated.任何帮助,将不胜感激。

You need to parse the JSON response using jQuery.parseJSON()您需要使用 jQuery.parseJSON() 解析 JSON 响应

var data = jQuery.parseJSON(response);

Now, you can check it现在,您可以检查它

if(data.type == "LoginSuccess"){
 // do something
}elseif(data.type == "Wrong Password"){
 // do something else
}

And remove echo from your php code并从您的 php 代码中删除回声

session_start();
$message = array(); //Creating array variable to display custom messages depending on [TYPE]
//Require DB

require_once('db.php');

//Get values from the login form

$Mobile_number = $mysqlconnect->real_escape_string(trim($_POST['Mobile_no']));
$Password = $mysqlconnect->real_escape_string(trim($_POST['Password']));


//Query database for valid input match

$validation = "SELECT * from team_captain WHERE Mobile_Number = '$Mobile_number'";

$query = $mysqlconnect->query($validation);

$result = mysqli_num_rows($query);

if($result > 0){
    $fetch_pass = mysqli_fetch_array($query);
    $password_hash = $fetch_pass['User_Password'];
    if(password_verify($Password,$password_hash))
    {
        $message["type"] = 'LoginSuccess';   
        $_SESSION['sess_username'] = $fetch_pass['Full_Name'];  
          
    }
    else{

        $message["type"] = 'WrongCredentials';
        
    }
}
else{
    $message["type"] = 'WrongMobile'; 
}

header('Content-type: application/json');
echo json_encode($message);
?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM