標題重寫為:錯誤:'SyntaxError:”'”不是合法的JSON格式'
P粉716228245
P粉716228245 2023-08-22 17:53:58
0
2
421
<p>我有一個關於以下程式碼的問題。 <em>console.log</em> 的輸出為:</p> <p>我透過JavaScript的Ajax請求請求的URL是「login.php」:</p> <pre class="brush:php;toolbar:false;"><?php include('init.php'); use 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; } else { $json = json_encode(array("success" => 0)); echo $json; } } ?></pre> <p>我的JavaScript的Ajax請求:</p> <pre class="brush:php;toolbar:false;">$(() => { $('.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)); } }); }); });</pre> <p>為什麼PHP的回應<code>{"success":1}</code>不正確?問題是什麼? </p> <blockquote> <p>SyntaxError: “[object Object]”不是有效的JSON</p> </blockquote><p><br /></p>
P粉716228245
P粉716228245

全部回覆(2)
P粉738248522

嘗試這樣做以避免此錯誤:

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

如果你寫了dataType: "json",那麼jQuery會在進入"success"函數之前自動將你的回應解析為JSON。這在jQuery的$.ajax文件中有詳細描述

因此,data已經是一個物件。你不能將一個物件傳遞給JSON.parse() - 它需要一個字串。

所以,不需要

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

你可以直接寫

console.log(data);
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!