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.
использование 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)
Других решений пока нет …