2012-08-16 89 views
0

我从PHP返回JSON,它工作正常, ,但是当数据为空时,我填入默认的JSON数据,用于在选定的jQuery上应用.css元素,像这样:SyntaxError:missing]元素列表([对象对象])后

db.data = { "blocks" : {"css" : {"background-color" : "purple" }}}; 

(编辑:从我的分贝的CSS实际上包含斜线和确实与eval()函数工作:"css":"{ \"background-color\" : \"grey\" }

如果我CONSOLE.LOG它,FF将其显示为一个对象(所有绿色和红色,格式良好且可点击/可在萤火虫中展开:

Object { background-color= "purple" } 

eval()它将它传递给css之前。 我试图$.evalJSON从jQuery JSON插件,但它会给:

SyntaxError: JSON.parse: unexpected character 

编辑:我想它没有eval()函数,但会抛出同样的错误,而不是当我使用的CSS与斜线

我尝试在某处手动添加],但显然不会工作,如果我添加两个,它将创建一个数组,我不想要。

我申请的CSS元素是这样的:

DOMID = $('#target'); 
var CSS = eval(" (" +db.data.blocks.css+") "); 
this.DOMID.css(CSS); 

试过没有" (",没有空格,"("

有什么想法?

+0

原因'VAR CSS =的eval( “(” + db.data.blocks.css + “)”);'不工作是因为你的目标是[正确]使用双引号和'eval()'会感到困惑。但@Jon有解决方案。 'eval'是邪恶的。 – 2012-08-16 12:17:46

回答

1

您发布的代码不会工作,因为它被误导了。没有必要eval任何东西,即使强制db.data.blocks.css为一个字符串(为了放入parens)也会给你带来完全错误的价值。

相反,你应该简单地写

this.DOMID.css(db.data.blocks.css); 
+0

奇怪的是,仍然会在元素列表之后抛出相同的“SyntaxError:missing”,并且如果我不eval()它,ajax JSON将不起作用,因为由于某种原因它会返回字段db – TrySpace 2012-08-16 12:21:01

+0

但是这可能是因为斜杠(“css”:“{\”background-color \“:\”gray \“}) – TrySpace 2012-08-16 12:27:03

+0

@TrySpace:然后您发布的代码与您描述的不同。 :) – Jon 2012-08-16 12:27:16