繁体   English   中英

JSON值中的jQuery对象

[英]jQuery object in JSON value

这是我的第一个问题!

我正在通过AJAX调用JSON,以在客户端验证库中使用。 该库要求我为当前规则指定我希望在何处插入错误消息。 对于我的静态验证规则,我可以编写一个对象,例如:

{ 'errorlocation' : jQuery('[name="foo"]').closest('.bar') }

我的验证库允许我在第一次初始化后注入更多规则,因此当我通过REST提交我的模型时,我会收到带有错误的服务器响应。 我目前正在开发该服务器响应。 我希望错误响应只是一个验证规则数组,以便以后可以将这些规则注入到已经在页面上创建的相同验证对象中。 因此,在响应JSON中,我将需要上述代码段中的定义。

似乎Backbone和jQuery的parse json算法无法评估对象的jQuery()值,即使jQuery在全局名称空间中肯定可用。 所以这不起作用:

jQuery.parseJSON("{ 'errorlocation' : jQuery('[name=\"foo\"]').closest('.bar') }");

我曾想过只在解析后存储“ [name ='foo']”和jQuerying,但这不适用于我想链接的情况,例如上面的.closest('.bar')

有谁知道JSON解析器将解析/允许位于全局命名空间中的变量?

JSON是数据格式,而不是代码格式。 通常,您希望以一种将数据从服务器传递到客户端的方式来构造系统,然后客户端使用数据来确定操作。 因此,也许您会将foo.bar作为数据传递回去,并通过另一个参数确定要运行的函数。

如果您真的必须以这种方式设计它,而我建议您这样做,则可以使用eval将任意字符串评估为javascript,如下所示:

var errorInfo = jQuery.parseJSON(
    "{ 'errorlocation' : \"jQuery('[name=\"foo\"]').closest('.bar')\" }");

eval(errorInfo.errorocation);

您是否考虑过将整个jQuery调用存储为字符串,然后在客户端运行eval? 像这样:

json = jQuery.parseJSON("{ 'errorlocation' : 'jQuery(\'[name=\"foo\"]\').closest('.bar')' }");
location = eval(json.errorlocation) //runs the jQuery string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM