У меня есть PHP-скрипт, который используется для запроса POST, который возвращает (Echos) массив:Неожиданный маркер U при попытке разобрать массив JSON с AJAX
array(3) {
["message"]=>
string(32) "The item was successfully saved"
["newItemId"]=>
int(9)
["newCustomFieldIds"]=>
string(3) "[9]"
}
Мой запрос AJAX:
$.ajax({
url: 'updateItemDetails.php',
method: 'post',
data: {
...
}
}).done(function(response) {
console.log(response); //correct
console.log(response['newCustomFieldIds']); //undefined
console.log(JSON.parse(response['newCustomFieldIds'])); //unexpected token u
});
Первый console.log производит:
{"message":"The item was successfully saved","newItemId":9,"newCustomFieldIds":"[9]"}
, которое, как ожидалось. Однако второй дает undefined
.
Итак, когда я JSON.parse, я получаю Uncaught SyntaxError: Unexpected token u
! То, что я пытаюсь сделать, - получить "[9]"
в реальном массиве, т.е. [9]
.
Я этого не понимаю. newCustomFieldIds
определенно существует, потому что при регистрации response
, я это вижу - так почему же не работает console.log(response['newCustomFieldIds'])
?
hmmm теперь я получаю «Неожиданный токен a' ..!? (при двукратном анализе) –
Тогда 'response' - это не то значение, которое вы утверждаете в нем: https://jsfiddle.net/bu63quzb/. Общее решение довольно просто: если у вас есть строка, содержащая JSON, вызовите 'JSON.parse'. Прочитайте [Access/process (вложенные) объекты, массивы или JSON] (https://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json), чтобы узнать больше о том, как обращаться к объектам в получите нужное значение. –
http://i.stack.imgur.com/KhGY3.png - это то, что я вижу! –