JSON意外令牌


JSON Unexpected token s

JSON.parse()似乎不与我的代码工作,我不确定是什么原因。

JS代码:

var obj = JSON.parse(this.responseText);
console.log(obj.status + " " + obj.type);
if (obj.status == "success") {
   document.cookie = "accounttype=" + obj.type;
   document.cookie = "name=" + obj.name;
   var accounttype = getCookie(accounttype);
   if (accounttype == "Seller") {
      window.location.href = "../html/sell.html";
   }
}
PHP代码:

$count = mysqli_num_rows($result);
    if($count == 1){
        echo '{"status": "success", "type":"$account", "name":"$name"}';
    }else{
        echo '{"status": "failed"}';
    }

希望你们能帮助我,谢谢!

EDIT UPDATED CODE

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
        var str = JSON.stringify(this.responseText);
        var obj = JSON.parse(str);
        console.log(obj.status + " " + obj.type);
        if (obj.status == "success") {
            document.cookie = "accounttype=" + obj.type;
            document.cookie = "name=" + obj.name;
            var accounttype = getCookie(accounttype);
            if (accounttype == "Seller") {
                window.location.href = "../html/sell.html";
            }
        } else {
            sweetAlert("Oops...", "Invalid username or password!", "error");
            document.getElementById("password").value = "";
        }
    }
}
xmlhttp.open("POST", "../php/login.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("username=" + username + "&" + "password=" + password);
下面是更新后的PHP代码:
<?php
    include("checkdbconnection.php");
        session_start();

    $username = mysqli_escape_string($conn, $_POST['username']);
    $password = mysqli_escape_string($conn, $_POST['password']);
    $password = md5($password);
    $getLogin = "SELECT * FROM user WHERE username = '$username' and password = '$password'";
    $result = mysqli_query($conn, $getLogin);
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    $name = $row["firstname"];
    $account = $row["account_type"];
    if(!$result){
       echo "Query Error: ". mysqli_error($conn);
       die();
    }
    $jsonsuccess = ["status": "success", "type": $account, "name": $name];
    $jsonfail = ["status": "failed"];
    $jsonsuccstring = json_encode($jsonsuccess);
    $jsonfailstring = json_encode($jsonfail)
    $count = mysqli_num_rows($result);
    if($count == 1){
        echo $jsonsuccstring;
    }else{
        echo $jsonfailstring;
    }
?>

控制台返回未定义的JSON返回值

使用json_encode()

服务器端响应应该是

 $json = ["status": "success", "type": $account, "name": $name];
 $jsonstring = json_encode($json);
 echo $jsonstring;
 die();
你的JS代码应该像
$.ajax({  
    type: "GET",
    url: "URL.php",
    data: data,
    success: function(data){
        // Here is the tip
        var data = $.parseJSON(data);
        //Here is success 
        alert(data.status);
    }
});

编辑

你应该验证你的json字符串。如果可以,试一下:
var jsonStr="your json string";
var json=JSON.stringify(jsonStr);
json=JSON.parse(json)