Maison  >  Questions et réponses  >  le corps du texte

Titre réécrit en : Erreur : "SyntaxError : """ n'est pas un format JSON légal"

<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>
P粉716228245P粉716228245448 Il y a quelques jours465

répondre à tous(2)je répondrai

  • P粉738248522

    P粉7382485222023-08-23 11:56:34

    Essayez ceci pour éviter cette erreur :

    myFunction(data: string) {
      try {
        JSON.parse(data); 
        console.log(data);
      }
       catch (e) {
       console.log(e); 
      }
    }

    répondre
    0
  • P粉505450505

    P粉5054505052023-08-23 11:42:19

    Si vous écrivez dataType: "json",那么jQuery会在进入"success"函数之前自动将你的响应解析为JSON。这在jQuery的$.ajaxil y a une description détaillée dans le document.

    Donc,

    - il faut une ficelle. data已经是一个对象。你不能将一个对象传递给JSON.parse()

    Donc, pas besoin

    var jso = JSON.parse(data); console.log(jso);

    Vous pouvez écrire directement

    console.log(data);

    répondre
    0
  • Annulerrépondre