JSON Неожиданные токены

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"}';
}

Надеюсь, вы, ребята, можете мне помочь, спасибо!

РЕДАКТИРОВАТЬ ОБНОВЛЕННЫЙ КОД

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;
}
?>

Консоль возвращает undefined для обоих возвращаемых значений JSON.

2

Решение

использование 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)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]