我正在对端点进行 REST 调用,但遇到了内部属性保持字符串而不转换为 Javascript 的问题。
这是我得到的:
"43750": {
"taskId": 43750,
"statusId": 1,
"set_at": "2019-03-27 16:20:51",
"userId": 2,
"value": "[{\"text\":\"Recreational Vehicle\"}]" <-- Problem
},
这是我应该得到的(旧 API 响应):
"43750": {
"userId": "2",
"timestamp": "2019-03-27 16:20:51",
"value": [
{
"text": "Recreational Vehicle"
}
],
"statusId": "1"
},
这些是来自 Chrome 的 DevTools 网络部分的响应选项卡的片段。
出于某种原因,对象数组没有被解析为 javascript,而是剩余的字符串。我在 PHP 中将 Content Type 设置为 json 并在请求中使用了 json 数据类型。我错过了什么?
前端
$.ajax({
type: 'POST',
dataType: 'json',
url: API_URL,
data: {
action: 'getProject',
projectId: this.getActiveProjectId()
},
success: function (response) {
console.log('[AJAX RESPONSE] LOAD ACTIVE PROJECT', response);
debugger;
}
});
后端
<?php
$default_options = [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
$pdo = new PDO(
sprintf(
"dblib:host=%s;dbname=%s",
$server,
$database
),
$user,
$pass,
$default_options
);
/* Determine action, handle request */
/* Do PDO Query */
$tasks = $statement->fetchAll();
header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json');
echo json_encode($tasks, JSON_PRETTY_PRINT);
慕标琳琳