2013-01-02 33 views
2

我有一個網絡應用程序,允許使用文本字段輸入一些大型文本。這段文本被保存到數據庫中,然後在JSON響應中作爲字段發回給用戶。在瀏覽器中,我嘗試使用JSON.parse簡單地將其轉換爲Object,但這有時會根據用戶在該字段中輸入的內容而失敗。如何清理用戶輸入文字,以便在Javascript/JSON中使用它?

我認爲,現在,文本中有單引號,並且在打開瀏覽器端JavaScript之前,我可以調用JSON.parse

對這些數據進行清理的最佳方式是什麼?理想情況下,我可以在保存之後以最少的清洗將其解析回Object

+0

你可以結合這與PHP? –

+0

你不應該消毒輸入。你需要確保你的JSON通過使用其中一個標準的JSON編寫器來完成。 –

+0

問題在於無論你用什麼**在服務器上編碼** JSON。 (這幾乎肯定不是單引號字符問題,因爲JSON字符串必須用雙引號括起來,而不是單引號。) – Pointy

回答

4

這不是一個問題,衛生處理:可以很好地把一個字符串引號JSON:編碼簡單地逃脫他們。

你的問題是一個編碼。要在瀏覽器中構建JSON字符串,請使用JSON.stringify。要做到服務器端,你應該使用你的(unmentionned)服務器端語言/框架提供的工具。

2

與JSON的真棒事情是,你不需要消毒任何東西。無論您提供給JSON編碼器 - 它總是會輸出純JSON。顯然,如果您計劃在HTML頁面中使用JSON,則需要對HTML進行HTML編碼。根據JS編碼器需要確保有一個在那裏沒有</script>(例如,通過與\/更換/)。

你也不需要JSON.parse。 JSON是JavaScript的一個子集,所以你可以做這樣的事情(PHP-ISH爲簡單起見):

<script> 
    var obj = <?= json_encode($whatever) ?>; 
</script> 

如果你真的想包括JSON作爲作爲內部JSON特林考慮不這樣做。您可以將對象本身放在那裏 - 無需在您的JSON數據中使用JSON 字符串。但是,如果你有這個,它也應該始終有效。

+0

從問題(「它在JSON響應中作爲字段發回給用戶」 )我收集的JSON不包含在HTML文件中(但我不是100%確定的,因爲問題的某些部分是模糊的)。 –

+0

嗨兄弟,你覺得[這個問題](http://stackoverflow.com/q/14126198/601179)不是更好的刪除它,它成了一個羣衆。 :(並沒有很好的答案,所以,它不會是一個偉大的迷失,因此... – gdoron

相關問題