suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Titel umgeschrieben in: Fehler: „SyntaxError: „“ ist kein zulässiges JSON-Format“

<p>Ich habe eine Frage zum folgenden Code. Die Ausgabe von <em>console.log</em> <p>Die URL, die ich über eine JavaScript-Ajax-Anfrage angefordert habe, war „login.php“: </p> <pre class="brush:php;toolbar:false;"><?php include('init.php'); Verwenden Sie LoginLoginService; #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; } anders { $json = json_encode(array("success" => 0)); echo $json; } } ?></pre> <p>Meine JavaScript-Ajax-Anfrage:</p> <pre class="brush:php;toolbar:false;">$(() => { $('.login-form').on('submit', function (e) { e.preventDefault(); $.ajax({ Typ: „POST“, Datentyp: „json“, Zeitüberschreitung: 500, URL: '/src/login.php', Daten: $(this).serialize(), Erfolg: (Daten) => versuchen { var jso = JSON.parse(data); console.log(jso); } fangen (e) { console.log(e); falsch zurückgeben; } }, Fehler: (Daten) => console.log(JSON.parse(data)); } }); }); });</pre> <p>Warum ist die Antwort von PHP auf <code>{"success":1}</code> falsch? was ist das Problem? </p> <blockquote> <p>SyntaxError: „[object Object]“ ist kein gültiges JSON</p> </blockquote><p><br /></p>
P粉716228245P粉716228245449 Tage vor470

Antworte allen(2)Ich werde antworten

  • P粉738248522

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

    尝试这样做以避免出现此错误:

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

    Antwort
    0
  • P粉505450505

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

    如果你写了dataType: "json",那么jQuery会在进入"success"函数之前自动将你的响应解析为JSON。这在jQuery的$.ajax文档中有详细描述

    因此,data已经是一个对象。你不能将一个对象传递给JSON.parse() - 它需要一个字符串。

    所以,不需要

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

    你可以直接写

    console.log(data);

    Antwort
    0
  • StornierenAntwort