我對(duì)以下代碼有問(wèn)題。console.log輸出為:
我通過(guò)javascript ajax請(qǐng)求請(qǐng)求的URL是"login.php":
<?php include('init.php');
use Login\LoginService;
#include(__DIR__.'/Login/LoginService.php');
global $pdo;
session_start();
$username = $_POST['username'];
$pass = $_POST['password'];
if (!empty($username)) {
$test = new LoginService();
$user = $test->getUsersLogin($username);
if (!empty($user) && $user[0]['login'] == $username) {
$json = json_encode(array("success" => 1));
echo $json;
} else {
$json = json_encode(array("success" => 0));
echo $json;
}
}
?>
我通過(guò)js的ajax請(qǐng)求:
$(() => {
$('.login-form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: "POST",
dataType: "json",
timeout: 500,
url: '/src/login.php',
data: $(this).serialize(),
success: (data) => {
try {
var jso = JSON.parse(data);
console.log(jso);
} catch (e) {
console.log(e);
return false;
}
},
error: (data) => {
console.log(JSON.parse(data));
}
});
});
});
為什么php {"success":1}
的響應(yīng)不正確?問(wèn)題是什么?
語(yǔ)法錯(cuò)誤:“[object object object]”不是有效的JSON
如果您編寫(xiě)
dataType: "json"
,那么jQuery將在返回“成功”函數(shù)之前自動(dòng)將您的響應(yīng)解析為JSON。這在jQuery$.ajax
文檔中有描述。因此,
data
已經(jīng)是一個(gè)對(duì)象。不能將對(duì)象傳遞到JSON.parse()
-它需要字符串。Instead of
你可以直接寫(xiě)