我正在对端点进行 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);
1 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
value表中的列包含一个JSON字符串。您要么需要在发送响应之前对其进行解码:
foreach ($tasks as &$task) {
$task['value'] = json_decode($task['value']);
}
或者在 JavaScript 中执行:
success: function(response) {
response.forEach(r => r.value = JSON.parse(r.value));
// rest of success function
}
- 1 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消