Laravel控制器返回数组后,如何在input中存储并通过JQuery读取为数组?
问题原因
直接在Blade模板中输出PHP数组{{ $array }}时,PHP会将数组转换为非标准的字符串(比如"Array"),导致jQuery读取后无法解析为合法的JavaScript数组,进而触发"string object invalid"错误。
解决方案
步骤1:在Blade模板中将PHP数组转为JSON格式存入Input
修改Hidden Input的value属性,用json_encode()把PHP数组转为标准JSON字符串,借助Blade的自动转义保证HTML属性的合法性:
<input class="form-control" id="id" name="id" type="hidden" value="{{ json_encode($array) }}">
步骤2:用jQuery读取并解析JSON字符串
读取Input的值后,通过JSON.parse()将JSON字符串解析为JavaScript数组:
const arrayData = JSON.parse($("#id").val()); // 此时arrayData可作为正常数组使用 console.log(arrayData);
额外注意事项
- 若数组包含特殊字符(引号、换行符等),
json_encode()会自动转义,确保存入Input的字符串是合法的HTML属性值。 - 不要使用
{!! json_encode($array) !!},关闭Blade自动转义可能引发XSS风险或HTML语法错误。
内容的提问来源于stack exchange,提问作者Nixon Darius
相关产品推荐
相关产品推荐

