繁体   English   中英

如何在Javascript中访问PHP数组?

[英]How can I access PHP array inside my Javascript?

我有一个非常简单的PHP数组

$array = [];
$array['a'] = '1';
$array['b'] = '2';
$array['c'] = '3';

PHP

如果我dd($array); 我得到了

array:3 [▼
  "a" => "1"
  "b" => "2"
  "c" => "3"
]

如果我解码dd(json_encode($array)); , 我懂了

"{"a":"1","b":"2","c":"3"}"

JS

我希望能够在我的Javascript中访问此变量,所以我尝试过


1

的console.log($阵列);

我有

$ array未定义


2

我正在使用Laravel。 {{ }} == echo

的console.log( '{{$阵列}}');

我有

500 Internal Error

htmlentities()期望参数1为字符串,给定数组(查看:/Users/bheng/Sites/portal/resources/views/cpe/index.blade.php)


3

console.log('{{json_encode($ array)}}');

我有

要加载的页面,但数据看起来很糟糕

{"a":"1","b":"2","c":"3"}


4

console.log(JSON.parse('{{json_encode($ array)}}'));

我有

未捕获的SyntaxError:位于1的JSON中出现意外的令牌


console.log(JSON.parse('{{json_decode($ array)}}'));

我有

json_decode()期望参数1为字符串,给定数组


6

console.log('{{json_decode($ array)}}');

我有

json_decode()期望参数1为字符串,给定数组


目标

我只是希望能够在Javascript中以Javascript Array或JSON的形式访问我的数组。

有人可以请我填一下吗?

在Blade中, {{ $variable }}将输出字符串的转义版本,通过htmlentities()传递,以便在HTML中使用。 你想要一个未转义的版本。 你可以用{!! $variable !!} {!! $variable !!}为此:

console.log({!! json_encode($array) !!});

你不需要在它周围添加引号, json_encode()输出一个有效的javascript对象。 它会在必要时添加引号,如果您自己添加它们,您将在javascript中获取JSON 字符串 ,而不是JSON 对象

在Laravel你可以使用{!! !!}跳过实体转义

console.log({!! json_encode($array) !!});

只需将其作为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字符串。 这可以通过使用{!! ...... !!}

首先,您必须了解PHP在服务器端运行并在客户端运行javascript,因为PHP会做出响应,您应该打印如下脚本:

echo "<script>
var sheison = JSON.parse(".dd(json_encode($array)).");
console.log(sheison);
</script>";

我没有测试代码,只是想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM