【发布时间】:2021-01-05 03:20:49
【问题描述】:
在我的 Laravel 应用程序中,我将 JSON 对象传递给 Vue 组件:
<search v-bind:library="'{{ json_encode(language_library()) }}'"></search>
language_library(),为了测试,只返回一行:
{"you_dont_have_subscription":"You don\\'t have an active subscription right now."}
如您所见,字符串中的单引号被转义了。但是,Vue 会抛出这个错误:
[Vue warn]: Error compiling template:
invalid expression: Unexpected identifier in
'{"you_dont_have_subscription":"You don\\'t have an active subscription right now."}'
Raw expression: v-bind:library="'{"you_dont_have_subscription":"You don\\'t have an active subscription right now."}'"
我不明白为什么会出现这个问题。它是双引号内的单引号,它也被转义(在 PHP 后端使用 addslashes())。如果不是这样,我如何在我的 JSON 中拥有一个包含引号的字符串?
如果我手动做这样的事情而不是 addlahes...
str_replace("'", "\'", $string)
...我仍然遇到同样的错误,在 JSON 中的引号前面有两个反斜杠。
【问题讨论】:
-
我不明白你在说什么。什么逃不过什么?
-
你的反斜杠反斜杠单引号 .... 转义第二个反斜杠,而不是单引号 .... 你也有一个反斜杠 ... 即。
\\'逃脱了第二个\而不是'(终于写出来了:p - 该死的反斜杠) -
这是 PHP 内置的 addlashes 函数的输出...我不是手动添加斜杠。我不明白为什么它会添加两个斜线而不是一个,如果它适得其反?
-
如果我根本不使用addlashes,我会得到同样的错误 - 那么只有没有斜杠的单引号。
-
That's the output of PHP's in-built addslashes function- 那么PHP的addlashes函数不是你需要的
标签: javascript php json laravel vue.js