我正在尝试从数据库中检索数据。无论我检索什么数据,我都会将该数据放入数组,然后应用json_encode($data)。我在响应as a text中成功获取了对象数组。但是,当我尝试JSON.parse(response)时,出现错误消息,提示意外的令牌[

首先,我认为数据已经被解析,因此我尝试使用console.log(response[0])来打印第一个对象,但结果是[。我不知道出什么问题了。

我的问题可能与其他人相同,但是我尝试了所有可能的解决方案,但无法通过这些答案解决。

我的PHP代码:



public

function showDeposits($db_conn) {

  $sql = "SELECT * FROM `deposit`";

  if ($db_conn - > query($sql)) {
    $r = $db_conn - > query($sql);
    if ($r - > num_rows > 0) {
      $data = array();
      for ($i = 0; $i < $r - > num_rows; $i++) {
        $data[] = $r - > fetch_assoc();
      }
      echo json_encode($data);
    }
  }

}





我的Javascript代码:



this.depositForm = function() {
  var form = document.querySelector("#dep_form");

  form.addEventListener("submit", function(e) {
    e.preventDefault();
    var json = {
      time: getTime().text,
      stamp: getTime().stamp,
      date: getDate().dateText,
      data: JSON.parse(toJSONString(this))
    };
    fetch("model.php", {
      method: "POST",
      headers: {
        "Content-Type": "application/json"
      },
      body: JSON.stringify(json)
    }).then(function(t) {
      t.text().then(function(res) {
        var j = JSON.parse(res);
        console.log(j);
      })
    })

  })

}





响应

javascript - SyntaxError:JSON中出现意外的 token “[”-Javascript-LMLPHP

最佳答案

无需使用.text()然后对其进行解析,您只需使用.json

this.depositForm = function() {
  var form = document.querySelector("#dep_form");

  form.addEventListener("submit", function(e) {
    e.preventDefault();
    var json = {
      time: getTime().text,
      stamp: getTime().stamp,
      date: getDate().dateText,
      data: JSON.parse(toJSONString(this))
    };
    fetch("model.php", {
      method: "POST",
      headers: {
        "Content-Type": "application/json"
      },
      body: JSON.stringify(json)
    })
    .then((res) => res.json())
    .then((data) => console.log(data))
  })
}

小提示:您应该使用promise chaining

10-06 01:12