我有一个非常简单的PHP数组
$array = [];
$array['a'] = '1';
$array['b'] = '2';
$array['c'] = '3';
如果我dd($array);
我得到了
array:3 [▼
"a" => "1"
"b" => "2"
"c" => "3"
]
如果我解码dd(json_encode($array));
,我就得到了这个
"{"a":"1","b":"2","c":"3"}"
我希望能够在我的Javascript中访问此变量,所以我尝试了
的console.log($阵列);
我得到了
$ array未定义
我正在使用Laravel。 {{ }} == echo
的console.log( '{{$阵列}}');
我得到了
500 Internal Error
htmlentities()期望参数1为字符串,给定数组(查看:/Users/bheng/Sites/portal/resources/views/cpe/index.blade.php)
console.log('{{json_encode($ array)}}');
我得到了
要加载的页面,但数据非常糟糕
{"a":"1","b":"2","c":"3"}
console.log(JSON.parse('{{json_encode($ array)}}'));
我得到了
Uncaught SyntaxError:意外的令牌&在位置1的JSON中
console.log(JSON.parse('{{json_decode($ array)}}'));
我得到了
json_decode()期望参数1为字符串,给定数组
console.log('{{json_decode($ array)}}');
我得到了
json_decode()期望参数1为字符串,给定数组
我只是希望能够在Javascript中以Javascript Array或JSON的形式访问我的数组。
有人可以请我填一下吗?
答案 0 :(得分:7)
在Blade中,{{ $variable }}
将输出字符串的转义版本,通过htmlentities()
传递,以便在HTML中使用。你想要一个未转义的版本。您可以使用{!! $variable !!}
:
console.log({!! json_encode($array) !!});
您无需在其周围添加引号,json_encode()
会输出有效的javascript对象。它会在必要时添加引号,如果您自己添加引号,您将在javascript中获取JSON 字符串,而不是JSON 对象。
答案 1 :(得分:1)
在Laravel你可以使用{!! !!}跳过实体转义
console.log({!! json_encode($array) !!});
答案 2 :(得分:0)
只需将其作为json数据回显并在javascript中使用它。
<?php
$array = [];
$array['a'] = '1';
$array['b'] = '2';
$array['c'] = '3';
?>
<script>var jsArr = <?=json_encode($array);?>;
alert(jsArr);</script>
编辑,因为澄清您正在使用刀片。那应该是:
<?php
$array = [];
$array['a'] = '1';
$array['b'] = '2';
$array['c'] = '3';
?>
<script>var jsArr = {!! json_encode($array) !!};
alert(jsArr);</script>
{...}是字符串的转义版本。但是你需要unescapt字符串。这可以通过使用{!! ...... !!}。
答案 3 :(得分:0)
首先,您必须了解PHP在服务器端运行并在客户端运行javascript,因为PHP会做出响应,您应该打印这样的脚本:
echo "<script>
var sheison = JSON.parse(".dd(json_encode($array)).");
console.log(sheison);
</script>";
我没有测试代码,只是想法。