我正在使用核心 PHP 开发 API。当我返回数据时,所有字段数据都以字符串形式返回,但在某些字段中,我有 JSON 类型的数据,它也以字符串形式返回
示例:
end_city: "mysore",
facilities: "{"Breakfast":false,"PickDrop":true,"Hotel":false,"Guide":true}"
这里,现场设施有 JSON,但在响应中将其作为字符串获取,只想将其作为 JSON 而不是字符串。
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, DELETE, PUT');
header('Access-Control-Allow-Headers: token, Content-Type');
// get database connection
require_once '../config/database.php';
// instantiate tours object
include_once '../objects/tours.php';
$db = new Database();
$tours = new Tours($db);
$tour = $tours->getTour($_REQUEST["t"]);
$num = $tour->num_rows;
if ($num > 0) {
while ($row = $tour->fetch_assoc()) {
echo json_encode($row);
}
// set response code - 200 OK
http_response_code(200);
} else {
// set response code - 404 Not found
http_response_code(404);
// tell the user no products found
echo json_encode(
array("message" => "No tour found.")
);
}
确切的场景是,我有一个表单,提交该表单后,我在某些字段中获取 JSON 数据,在获取所有数据后,我使用 core php 将其保存在 mysql 中,现在我必须使用 angualrjs 在页面上显示该数据。现在,当我获取请求时,我获取 JSON 格式的数据,并且所有字段都是字符串类型,甚至我获取的 JSON 字段都是字符串,这会产生问题。
使用 json_decode 将字符串转换为 json
application/json
改变:
if ($num > 0) {
while ($row = $tour->fetch_assoc()) {
echo json_encode($row);
}
// set response code - 200 OK
http_response_code(200);
进入
header('content-type: application/json');
if ($num > 0) {
http_response_code(200);
$results = []
while ($row = $tour->fetch_assoc()) {
$results[] = $row;
}
echo json_encode($results);
上述问题已解决,问题是我的数据未正确保存在数据库中,这就是 JSON.parse 无法正常工作的原因,但现在问题已使用 JSON.parse 解决了
json_decode(str_replace("'",'"',$sqldatacell),true)