我正在對端點進行 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 關注
- 160 瀏覽
添加回答
舉報
0/150
提交
取消