我有一个json对象在DB:
{
"ui": {},
"title": "Hola mundo 2",
"values": {},
"properties": {},
"description": "descripcion"
}
在Laravel控制器中,我向视图发送数据:
$surveyData = Empresa::find($empresa_id)->survey;
return view('surveys.edit')->with('surveyData', json_encode($surveyData));
在Laravel Blade中,我将数据附加在div中:
<div id="poll" data-survey=@json($surveyData)></div>
在React中,我得到数据并保存在oldData变量:
const oldData = document.querySelector("#poll").dataset.survey
问题是,我得到一个JSON。解析错误在React中,因为JSON打印在Laravel视图DOM在以下unicode格式:
<div id="poll" data-survey="u0022{\u0022ui\u0022: {}, \u0022title\u0022: \u0022Hola mundo 2\u0022, \u0022values\u0022: {}, \u0022properties\u0022: {}, \u0022description\u0022: \u0022descripcion\u0022}u0022"></div>
在React中解析json时:
JSON.parse(oldData)
我得到这个错误:
Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
我真的不知道错误在哪里,也不知道该怎么办。
您似乎对JSON数据进行了双重编码:json_encode($surveyData)
,然后是@json($surveyData)
把
return view('surveys.edit')->with('surveyData', json_encode($surveyData));
return view('surveys.edit')->with('surveyData', $surveyData);