I have a json object in DB:
{ "ui": {}, "title": "Hola mundo 2", "values": {}, "properties": {}, "description": "descripcion" }
In the Laravel controller, I send the data to the view:
$surveyData = Empresa::find($empresa_id)->survey; return view('surveys.edit')->with('surveyData', json_encode($surveyData));
In the Laravel Blade, I attach the data in a div:
<div id="poll" data-survey=@json($surveyData)></div>
In React I get the data and save in oldData variable:
const oldData = document.querySelector("#poll").dataset.survey
The problem is that I’m getting a JSON.parse error in React because that JSON print in the Laravel view DOM in the following unicode format:
<div id="poll" data-survey="u0022{\u0022ui\u0022: {}, \u0022title\u0022: \u0022Hola mundo 2\u0022, \u0022values\u0022: {}, \u0022properties\u0022: {}, \u0022description\u0022: \u0022descripcion\u0022}u0022"></div>
when I parse that json in React:
JSON.parse(oldData)
I’m getting this error:
Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
I really don’t know where is the error or what else to do.
Advertisement
Answer
You seem to double encode your JSON data:
json_encode($surveyData)
and then @json($surveyData)
Change
return view('surveys.edit')->with('surveyData', json_encode($surveyData));
to
return view('surveys.edit')->with('surveyData', $surveyData);