Titre réécrit en : Erreur : "SyntaxError : """ n'est pas un format JSON légal"
P粉716228245
2023-08-22 17:53:58
<p>J'ai une question sur le code suivant. Le résultat de <em>console.log</em>
<p>L'URL que j'ai demandée via une requête JavaScript Ajax était "login.php": </p>
<pre class="brush:php;toolbar:false;"><?php include('init.php');
utilisez LoginLoginService ;
#include(__DIR__.'/Login/LoginService.php');
global $pdo ;
session_start();
$nom d'utilisateur = $_POST['nom d'utilisateur'];
$pass = $_POST['mot de passe'];
si (!empty($nom d'utilisateur)) {
$test = nouveau LoginService();
$user = $test->getUsersLogin($username);
if (!empty($user) && $user[0]['login'] == $username) {
$json = json_encode(array("success" => 1));
echo $json;
} autre {
$json = json_encode(array("success" => 0));
echo $json;
}
}
?>≪/pré>
<p>Ma requête JavaScript Ajax :</p>
<pre class="brush:php;toolbar:false;">$(() => {
$('.login-form').on('submit', fonction (e) {
e.preventDefault();
$.ajax({
tapez : "POST",
Type de données : "json",
délai d'attente : 500,
URL : '/src/login.php',
données : $(this).serialize(),
succès : (données) =>
essayer {
var jso = JSON.parse(données);
console.log(jso);
} attraper (e) {
console.log(e);
renvoie faux ;
}
},
erreur : (données) =>
console.log(JSON.parse(données));
}
});
});
});</pré>
<p>Pourquoi la réponse de PHP <code>{"success":1}</code> quel est le problème? </p>
<blockquote>
<p>SyntaxError : "[object Object]" n'est pas un JSON valide</p>
</blockquote><p><br /></p>
Essayez ceci pour éviter cette erreur :
Si vous écrivez
Donc,dataType: "json"
,那么jQuery会在进入"success"函数之前自动将你的响应解析为JSON。这在jQuery的$.ajax
il y a une description détaillée dans le document.- il faut une ficelle.
Donc, pas besoindata
已经是一个对象。你不能将一个对象传递给JSON.parse()