Uncaught SyntaxError: Unexpected token a in JSON at position at JSON.parse (<anonymous>)
Usando laravel y blade defino la creación de una constante en js a partir de un JSON así:
const phpresult = JSON.parse(`{!! json_encode($result) !!}`)
El resultado es algo como:
const phpresult = JSON.parse(`[{"request_uri":"\/__media__\/js\/netsoltrademark.php?d=baidu.com"},{"request_uri":"\/...}]`)
Si bien ej JSON está bien formado me daba un error en esta linea:
{"request_uri":"/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP21"}
El problema está en el caracter backslash o barra invertida \. Cuando se le inyecta a JSON.parse no lo sabe interpretar.
La solución pasa por hacer uso de String.raw quedando así la transformación:
//$result es una variable php que la tengo en una vista .blade. json_encode es una función nativa de php
const phpresult = JSON.parse(String.raw`{!! json_encode($result) !!}`)
Autor: Eduardo A. F.
Publicado: 12-01-2021 20:27