Php 在JSON中传递javascript代码
我使用jQuery对PHP脚本进行AJAX调用,该脚本需要返回嵌入JSON结果中的javascript代码,以便jQuery代码执行。如何在JSON中传递javascript代码?有两种方法:Php 在JSON中传递javascript代码,php,javascript,ajax,json,Php,Javascript,Ajax,Json,我使用jQuery对PHP脚本进行AJAX调用,该脚本需要返回嵌入JSON结果中的javascript代码,以便jQuery代码执行。如何在JSON中传递javascript代码?有两种方法: 您必须将其作为字符串传递,并在客户端使用eval() 您可以使用JSONP,让客户端脚本插入一个,其src指向返回新脚本的服务器端代码,而不是执行调用 无论是哪种情况,都要确保它的安全性——如果用户能够以某种方式将自己的代码插入到您的响应中,他们可能会造成一些损害。JSON的定义不允许传输javascri
eval()
,其src
指向返回新脚本的服务器端代码,而不是执行调用无论是哪种情况,都要确保它的安全性——如果用户能够以某种方式将自己的代码插入到您的响应中,他们可能会造成一些损害。JSON的定义不允许传输javascript函数。它应该是独立于语言的。如果您使用JSON解析器而不是eval(),那么如果JSON包含任何函数,它将失败 道格拉斯·克罗克福德,我相信是他创造了这个词 甚至JSONP也不返回函数,而是返回函数调用-
myFuncIAskedFor({returned JSON})
正如其他人所提到的,在本地定义函数是最安全的做法
还要使用JSON解析器您的ajax库应该支持JSON消息传递。你在用什么?你确定你真的需要传递代码吗?在大多数情况下,初始JS负载中的一些预先编写的函数与一些数据相结合,这些数据描述了使用哪些参数运行哪个函数是更好的选择。。。然而,好问题是,只有服务器知道要执行什么javascript代码,但它在客户端中还不存在。这就是为什么我需要知道这一点。eval是否比标准方法中只包含脚本慢?您的两个建议中,哪一个更好?为什么?JSONP会稍微快一点,并且使用得更频繁,但如果您不小心,它会受到XSS攻击。就我自己而言,我不会使用这两种方法,而是传递描述我需要对某些现有函数执行哪些操作的数据(参见David对您的问题的评论)。