Javascript JSON值中的jQuery对象
这是我的第一个问题 我通过AJAX调用JSON,以便在客户端验证库中使用。库要求我为当前规则指定插入错误消息的位置。对于静态验证规则,我可以编写如下对象:Javascript JSON值中的jQuery对象,javascript,jquery,json,Javascript,Jquery,Json,这是我的第一个问题 我通过AJAX调用JSON,以便在客户端验证库中使用。库要求我为当前规则指定插入错误消息的位置。对于静态验证规则,我可以编写如下对象: { 'errorlocation' : jQuery('[name="foo"]').closest('.bar') } 我的验证库允许我在第一次初始化之后注入更多的规则,因此当我通过REST提交模型时,我可能会收到一个带有错误的服务器响应。我目前正在开发服务器响应。我更希望错误响应只是一组验证规则,以便以后可以将这些规则注入到页面上已经创
{ 'errorlocation' : jQuery('[name="foo"]').closest('.bar') }
我的验证库允许我在第一次初始化之后注入更多的规则,因此当我通过REST提交模型时,我可能会收到一个带有错误的服务器响应。我目前正在开发服务器响应。我更希望错误响应只是一组验证规则,以便以后可以将这些规则注入到页面上已经创建的同一个验证对象中。因此,在响应JSON中,我需要上面代码片段中的定义
尽管jQuery在全局名称空间中确实可用,但主干和jQuery的解析json算法似乎无法计算对象的jQuery()
值。所以这不起作用:
jQuery.parseJSON("{ 'errorlocation' : jQuery('[name=\"foo\"]').closest('.bar') }");
我曾考虑过在解析后只存储“[name='foo']”和jQuery,但这不适用于我想要链接的情况,例如上面的.nexist('.bar')
有人知道JSON解析器会解析/允许位于全局命名空间中的变量吗?您是否考虑过将整个jQuery调用存储为字符串,然后在客户端运行eval?像这样:
json = jQuery.parseJSON("{ 'errorlocation' : 'jQuery(\'[name=\"foo\"]\').closest('.bar')' }");
location = eval(json.errorlocation) //runs the jQuery string
JSON是一种数据格式,而不是代码格式。通常,您希望以这样一种方式构建系统:将数据从服务器传递到客户机,然后客户机使用数据来确定操作。因此,您可能会将
foo
和.bar
作为数据传递回去,并传递另一个参数以确定要运行的函数
如果您真的必须这样设计,我建议您不要这样做,您可以使用eval将任意字符串作为javascript求值,如下所示:
var errorInfo = jQuery.parseJSON(
"{ 'errorlocation' : \"jQuery('[name=\"foo\"]').closest('.bar')\" }");
eval(errorInfo.errorocation);
谢谢mike,虽然我更希望能够将响应直接粘贴到验证库中,而不是每次加载其他验证规则时都必须对其执行一对多操作,但这会起作用。