2015-06-10 71 views
0

我想在textarea中編輯JavaScript並將其存儲回JavaScript對象。例如,我有這樣的對象:將JavaScript源代碼存儲在json對象中的正確方法是什麼?

var item1 = { 
    'id' : 1, 
    'title':'title', 
    'sourcecode' : "alert('hallo')" 
    }; 

如果我將內容更改爲alert("hallo")或更爲複雜的例子這是否破壞我的對象嗎?

我覺得有一些像這樣的https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/escape逃生功能。但它被標記爲已棄用。

因此,如果這被棄用,將複雜JavaScript代碼存儲到JavaScript對象中的正確方法是什麼?

我應該使用stringify嗎?

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

的JSON.stringify()方法一個JavaScript值轉換爲JSON 串,如果指定了替換器功能 任選取代的值,或可選地包括僅當 代用品指定的屬性數組被指定。

這不念想有在自動逃生構建。

+2

''alert('hallo')「'只是一個字符串。在將它傳遞給'JSON.stringify'之前,您可以像其他任何字符串一樣將其轉義。 ' 「警報(\」 你好\ 「)」'。值得注意的是,它實際上並不需要轉義,因爲它使用單引號 – CodingIntrigue

+0

是的,它是一個非常簡單的例子,因爲我想存儲更復雜的代碼,其中混合使用雙重和單個qoutes。所以你的意思是stringify將是正確的方式? – svenhornberg

+0

這很好。關鍵是,* source *會轉義。無論你在哪裏*創建* item1並設置'sourcecode'屬性。是的,'JSON.stringify'將創建該對象的JSON字符串表示形式 – CodingIntrigue

回答

0

如果您需要將數據發送到服務器,我會說,你應該encodeURI你的源代碼,然後JSON.stringify的整個對象。當從服務器獲取數據時,你應該使用decodeURI源代碼

相關問題