В routes/api.php
я создал следующий маршрут
Route::get('/config', function(){
return response()->json([
'cdn' => cdn_url(),
'slide_image_path' => '/uploads/front-slides/',
'offer_image_path' => '/uploads/offers/',
'offer_image_thumb_path' => '/uploads/offers/thumbs/'
]);
});
В браузере я делаю
$.ajax({
url : 'https://www.example.com/api/config',
success : function(response){
var data = JSON.parse(response);
console.log(data);
}
});
и получаю ошибку "Неожиданный токен o в JSON в позиции 1"; Но когда я использую json_encode()
ядра php, ответ json успешно анализируется.
Также, когда я использую https://jsonformatter.curiousconcept.com/ для проверки JSON, он может анализировать JSON без каких-либо проблема независимо от того, что я использую (json_encode()
или response()->json()
). Но это также дает предупреждение о недопустимом JSON.
До сих пор я наблюдал, что когда я использую json_encode()
, ответ содержит заголовок «Кодировка содержимого: gzip». Но когда я использую Laravel response()->json()
, заголовок Content Encoding: gzip отсутствует.
Я также пытался установить этот заголовок вручную с помощью функции header('Content-Encoding: gzip')
при использовании response()->json()
. Но тогда браузер выдает ошибку "net::ERR_CONTENT_DECODING_FAILED";
Я думаю, что это проблема, связанная с кодировкой контента или кодировкой символов.