【问题标题】:Parsing encoded php object having a property containing html markup解析具有包含 html 标记的属性的编码 php 对象
【发布时间】:2018-12-27 18:33:05
【问题描述】:

我需要在我的控制器中对一个名为“contact”的 php 对象进行 json 编码,将其传递给我的视图,然后使用 javascript 对其进行解析。其中一个对象属性包含 HTML 标记,这似乎会引起很多问题。我在成功解析对象时遇到了很多麻烦。

在调用 JSON.parse() 时,我不断收到以下 javascript 错误。

VM4464:1 Uncaught SyntaxError: Unexpected token & in JSON at position 1
    at JSON.parse (<anonymous>)

我尝试了什么:

PHP

$contact = htmlspecialchars(json_encode($contact), ENT_QUOTES, 'UTF-8');

前端

var contact = JSON.parse("{{ $contact }}");

【问题讨论】:

  • 我是否可以假定{{ $campaign }} 的整个字符串被$contact 的内容替换?或者那里还有其他的魔法。此外,请在使用 htmlspecialchars 处理它之前提供print_rvar_dumpvar_dump(因为仅json_encode($contact) 就应该完成您需要的所有工作)。
  • 这也是用ajax调用的吗?
  • @IncredibleHat,请编辑帖子,内容应为 $contact。其次,不,我从 Laravel 控制器提供编码数据。
  • @IncredibleHat,简单的 json 编码不起作用,导致同样的错误。
  • 对... laravel。处理这个问题的人应该介入,因为答案可能很明显,但是处理那个包装器,使它成为我不会触及的东西。对不起。

标签: javascript php json laravel-blade


【解决方案1】:

就在昨天我遇到了同样的问题,显然它与刀片转义特殊字符有关。我在这个网站上找到了答案,

试试 var contact = JSON.parse('{!! json_encode($contact) !!}');

注意使用 {!!而不是 {{,并尝试尝试使用单引号/双引号,甚至不使用引号,也许?

【讨论】:

  • 有趣。不需要 JSON.parse。没有引号,似乎工作!感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 2012-10-13
  • 2012-07-30
  • 1970-01-01
  • 2014-02-28
  • 2018-05-11
相关资源
最近更新 更多