如何将php Json编码的对象正确地提供给javascript方法。

如何将php Json编码的对象正确地提供给javascript方法。,javascript,Javascript,我试图将一个PHP json_编码的对象传递给一个接受2个参数的函数。但当它在浏览器上呈现时,它一直说 在Firefox的Inspector上: SyntaxError:在参数列表之后缺少) 关于Chrome的检查员: 未捕获的语法错误:输入意外结束 代码: <td> <a href="#" onclick="showEditModal(<?php echo json_encode($value, JSON_HEX_APOS) ?>)">Edit</a&

我试图将一个PHP json_编码的对象传递给一个接受2个参数的函数。但当它在浏览器上呈现时,它一直说

在Firefox的Inspector上:

SyntaxError:在参数列表之后缺少)

关于Chrome的检查员:

未捕获的语法错误:输入意外结束

代码:

<td>
<a href="#" onclick="showEditModal(<?php echo json_encode($value, JSON_HEX_APOS) ?>)">Edit</a>
</td>

浏览器上的源代码:

<td>
<a href="#" onclick="showEditModal({"id":2,"title":"Announcement 1","content":"Announcement 1 Content","dateAdded":"2018-04-24 14:44:27"})">Edit</a>
</td>

我尝试添加
\'
,但没有帮助。也许我做错了。从昨晚开始我就一直在做这个,所以我想我现在需要问一下

我每次测试时都会清除浏览器的缓存,但得到的结果相同。也有类似的问题,但我尝试过,但无法解决我的问题


我非常感谢你的帮助

内联事件处理程序本质上是HTML标记中的
eval
——它们是一种不好的做法,会导致代码分解不良,难以管理,特别是当您试图使用PHP这样的动态编写时。认真考虑用JavaScript附加事件,例如:

要将数据从服务器发送到客户端,您应该使用
data-
属性、
application/json
或网络请求。例如,以
应用程序/json
路由为例,您可以执行以下操作:

<td>
<a href="#">Edit</a>
<script type="application/json">
<?= json_encode($value, JSON_HEX_APOS) ?>
</script>
</td>

你要做的就是改变报价。对于onclick函数,从“到”

浏览器读取您的HTML作为

<a href="#" onclick="showEditModal({"id":2,"title":"Announcement 1","content":"Announcement 1 Content","dateAdded":"2018-04-24 14:44:27"})">Edit</a>

当你想把它读成

<a href="#" onclick='showEditModal({"id":2,"title":"Announcement 1","content":"Announcement 1 Content","dateAdded":"2018-04-24 14:44:27"})'>Edit</a>

检查语法突出显示中的差异

因此,你得到了

SyntaxError:在参数列表之后缺少)


但就像前面提到的@CertainPerformance一样。最好不要将其作为内联函数编写。将值设置为JS对象,并在执行函数时使用它。尽可能避免
内联函数

您所要做的就是更改onclick函数的引号。从
。@user1496463谢谢。这就解决了问题。我不认为这是那么容易,因为我最近才开始继续学习网络开发。来自爪哇。谢谢,谢谢你的回答。这对我将来会很有用的。代码很整洁。我还在努力让自己熟悉它在网络上的工作原理。我肯定会在我的编码中应用这种风格。谢谢,谢谢。我很感激。这是一个简单的解决方案,但确实解决了它。从昨晚起就一直在试图修复它,现在它开始工作了。不过我找到了另一种方法。有人建议在php中使用
htmlentities()
,这同样有效。是的,我同意@特定的性能是一种很好的编码方式。必要时,我通常尝试在不同的文件上分离代码块。
<a href="#" onclick='showEditModal({"id":2,"title":"Announcement 1","content":"Announcement 1 Content","dateAdded":"2018-04-24 14:44:27"})'>Edit</a>