2009-12-04 69 views
0

我對JSON不太瞭解,因此任何幫助都會很棒......JSON變量顯示爲文本

我正在通過JQuery的.load加載頁面。

我將varname設置爲一個變量,但它發佈爲實際變量名稱而不是我設置它。

換句話說,它顯示爲「varname」而不是「class_id」。

var varname = "class_id"; 

$(this).siblings(".container").load(loadurl,{varname:openedid,"all_ids":allids}); 

Firebug Screenshot

回答

3

這是因爲(據我所知)你不能把表達作爲哈希構造一個ID,因爲它們會自動引述字符串。

換句話說,這是有效的JavaScript

$(this).load(url, {name: "Foo", age: 13}); 

的關鍵nameage在那裏。在JavaScript中,您不必引用散列鍵,儘管在嚴格的JSON中引用對鍵是必需的。 (但是引用不會造成傷害,並且在一些情況下,正如約旦在評論中所建議的那樣,例如,你需要使用諸如var這樣的保留字作爲散列鍵)

爲了達到預期的效果,我建議一個漫長的溶液(?任何聰明的一行人)

var varname = "class_id"; 

var data = {all_ids: allids}; 
data[varname] = openedid; 

$(this).siblings('.container').load(loadurl, data); 
+0

引用鍵是在某些情況下有必要 - 比如IE6倒下,如果你使用保留字作爲重點,因此,如果您嘗試{類: 「some-value」}它會嘔吐,因爲「class」是一個保留字。我認爲IE7 +和其他現代瀏覽器解除了這種痛苦。 – 2009-12-04 17:15:53

+0

聰明的單線?我們不打算實現*聰明*代碼。你已經發布了*正確*的方式來做到這一點。請記住,編寫代碼比調試代碼更容易,所以如果您要儘可能編寫出聰明的代碼,那麼稍後您就不會聰明地進行調試。 – 2009-12-04 17:16:19

+2

@David Hedlund:我同意;儘管我想我們所有人在想到聰明的單線球員時都會暗暗激動。來吧,承認它:p – kizzx2 2009-12-04 17:21:27