簡體   English   中英

如何清除用戶輸入的文本,以便可以在Javascript / JSON中使用它?

[英]How to sanitize user input text so that it can be used in Javascript/JSON?

我有一個Web應用程序,其中允許使用文本字段輸入一些大文本。 該文本將保存到數據庫,然后稍后作為JSON響應中的字段發送回用戶。 在瀏覽器中,我嘗試使用JSON.parse將其簡單地轉換為Object ,但這有時會失敗,具體取決於用戶在字段中輸入的內容。

我認為現在該文本中包含單引號,並且在我可以對其調用JSON.parse之前,這些都破壞了瀏覽器端Javascript。

清除數據的最佳方法是什么,以便在理想情況下,保存數據后我可以將其解析回Object ,而無需進行過多的清理工作?

這不是一個清理問題:您可以很好地在JSON中放入帶引號的字符串:編碼只是將其轉義。

您的問題是編碼問題。 要在瀏覽器中構建JSON字符串,請使用JSON.stringify 要在服務器端執行此操作,應使用(未提及的)服務器端語言/框架提供的工具。

JSON的出色之處在於您無需清理任何東西。 無論您向JSON編碼器輸入什么內容,它都將始終輸出純JSON。 顯然,如果您打算在HTML頁面中使用JSON,則需要對JSON進行HTML編碼。 根據需要確保JS編碼器有沒有</script>在那里(例如,通過替換/\\/ )。

您也不需要JSON.parse JSON是JavaScript的子集,因此您可以執行類似操作(為簡化起見,使用PHP-ish):

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

如果您真的想將JSON作為Tring包含在JSON中,請考慮不要這樣做。 您可以只在其中放置對象本身-無需在JSON數據中包含JSON 字符串 但是,如果您仍然有此要求,那么它也應該始終有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM