php javascript 变量,输出 PHP 变量到 JavaScript 变量「正确方式」

如果你不是 SPA,那么在Laravel Blade 模板中不可避免输出部分内容到 JavaScript 脚本中:

例如 Bad ✖️:

var profile = {

'username' => '{{ $username }}'

};

如果 $username 中存在 ' or " 等其他的字符,那么js语法错误;如上面代码变量 $username = "我有一个'单引号",'username' => '我有一个'单引号' 语法就出现问题

只支持字符串,无法将对象和数组直接输出到 js 变量中

例如 Good ✔️:

{!! app('js.transformer')->setNamespace('profile')->put(['username' => $username]); !!}

使用方式:

composer require helingfeng/php-javascript-transformer

代码示例:

// 包含特殊字符输出

app('js.transformer')->put(['username' => "'helingfeng"]);

# window.username = '\'helingfeng';

// 修改 namespace 输出

app('js.transformer')->setNamespace('profile')->put(['username' => 'helingfeng']);

# window.profile = window.profile || {};profile.username = 'helingfeng';

// 输出包含 script 标签

app('js.transformer')->includeScript()->put(['username' => 'helingfeng']);

#

# window.username = 'helingfeng';

#

模板中使用 {!! !!} 非转义输出页面头部或底部即可。

本作品采用《CC 协议》,转载必须注明作者和本文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHPJavaScript 之间传递变量时,需要注意它们的数据类型和作用域。如果变量的作用域或数据类型不一致,可能会出现变量引用问题。 一种常见的解决方法是将 PHP 变量的值作为字符串传递给 JavaScript,并在 JavaScript 中解析为对应的数据类型。例如,可以使用 JSON 格式将 PHP 数组或对象转换为字符串,然后在 JavaScript 中使用 JSON.parse() 方法将其解析为 JavaScript 对象或数组。 以下是一个示例: 在 PHP 中定义一个数组并将其转换为 JSON 字符串: ``` <?php $my_array = array('foo' => 'bar', 'baz' => 'qux'); $my_json = json_encode($my_array); ?> ``` 在 HTML 中引入一个 JavaScript 文件并使用 JSON.parse() 方法解析 JSON 字符串: ``` <html> <head> <script type="text/javascript" src="my_script.js"></script> </head> <body> ... <script> var my_json = '<?php echo $my_json; ?>'; var my_obj = JSON.parse(my_json); alert(my_obj['foo']); // 输出 'bar' </script> </body> </html> ``` 在 JavaScript 中定义一个对象并将其转换为 JSON 字符串: ``` var my_obj = {foo: 'bar', baz: 'qux'}; var my_json = JSON.stringify(my_obj); ``` 在 PHP 中解析 JSON 字符串并将其转换为数组: ``` <?php $my_json = '{"foo":"bar","baz":"qux"}'; $my_array = json_decode($my_json, true); ?> ``` 在 PHP 中解析 JSON 字符串并将其转换为对象: ``` <?php $my_json = '{"foo":"bar","baz":"qux"}'; $my_obj = json_decode($my_json); ?> ``` 这样就可以在 PHPJavaScript 之间传递变量,并解决变量引用问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值