我正在尝试从数据库中检索数据。无论我检索什么数据,我都会将该数据放入数组,然后应用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);
})
})
})
}
响应
最佳答案
无需使用.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。