2012-08-16 71 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