Ошибка parseJSON: неожиданный символ в строке 1 столбца 2 данных JSON

88
5

У меня есть PHP script так:


$STL = array();
$filter = array();
$filter['sort_by'] = "date_added";
$filter['sale'] = "F";
$filter['per_page'] = "12";
$STL['filter'] = $filter;
echo json_encode($STL);

Это дает следующий результат:


{"filter":{"sort_by":"date_added","sale":"F","per_page":"12"}}

Я пытаюсь использовать parseJSON так:


$.ajax({ 
url: 'myPHP.php',
type: 'post',
data : get_session,
async: false,
dataType: 'json',
success: function(result) {
var json = $.parseJSON(result);
}
});

Но я получаю следующий результат:


SyntaxError: JSON.parse: неожиданный символ в строке 1 столбца 2 данных JSON



Я предполагаю, что строка json неверно отформатирована в PHP. Что я ошибался?

спросил(а) 2021-01-25T23:15:16+03:00 4 месяца, 4 недели назад
1
Решение
88

Когда вы указываете dataType: 'json' (или jQuery обнаруживает ответ JSON), он автоматически анализирует JSON для вас. Если вы затем попытаетесь снова проанализировать полученный объект, вы получите сообщение об ошибке, которое вы видите. Ваш параметр result функции success уже является объектом, с которым вы можете работать.


Также обратите внимание, что вы должны никогда использовать async: false. Это ужасная практика использовать его, поскольку он блокирует поток пользовательского интерфейса до тех пор, пока запрос AJAX не завершится. Это выглядит так, как будто браузер разбился. Удалите это свойство из настроек и поместите весь код, зависящий от результата AJAX, в обработчике success.

Попробуйте следующее:


$.ajax({ 
url: 'myPHP.php',
type: 'post',
data : get_session,
dataType: 'json',
success: function(result) {
console.log(result);
}
});

ответил(а) 2021-01-25T23:15:16+03:00 4 месяца, 4 недели назад
88

Если вы используете $.parseJSON(result) уже при успешном обратном вызове, удалите dataType: 'json', из свойств AJAX.. Или используйте другой способ, сохранив dataType: 'json', поскольку вы ожидаете, что JSON уже есть результат и удалите $.parseJSON(result). Используйте только один.

ответил(а) 2021-01-25T23:15:16+03:00 4 месяца, 4 недели назад
63

ошибка
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

 если ваш json-объект недействителен. для этого случая вы можете проверить свой json на jsonlint,

 но для этого случая, из-за использования dataType: 'json' в вашем запросе ajax, ваш результат уже есть синтаксический анализ josn


{"filter":{"sort_by":"date_added","sale":"F","per_page":"12"}}


$.parseJSON(result) превратить строку в JSON

ответ вашего запроса уже является допустимым JSON, поэтому ошибка возврата $.parseJSON(string)

ответил(а) 2021-01-25T23:15:16+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема