我正在尝试从数据库中检索数据。无论我检索到什么数据,我都会将该数据放入数组中,然后应用 json_encode($data)
。我在响应中成功获取了对象数组 as a text
。但是当我尝试 JSON.parse(response)
我收到一个错误,其中显示意外 token [
。
首先我认为数据已经被解析,所以我尝试了 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);
})
})
})
}
回应
最佳答案
不必使用 .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 .
关于javascript - 语法错误: Unexpected token "[ " in JSON - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53029269/