2011-08-22 38 views
1

我有一個字符串就像下面是從服務器端來字符串是HTML隱藏輸入wierdly保存

String productIDs = "[{"productID":"226167","productName":"It is my life (Bingo)"},{"productID":"3193","productName":"It is your name (jingo)"},{"productID":"273838","productName":"It's the same milk/Butter i drink/ate yesterday"}]" 

現在我將其保存在一個隱藏的輸入字段此字符串

<input type="hidden" class="hiddenInput" value="<%=productIDs %>" /> 

但當我通過螢火蟲檢查它是如下保存非常粗糙

<input type="hidden" class="hiddenInput" yesterday"}]"="" is ="" my ="" Butter ="" life ="" (Bingo)"},{"productid":"273838","productname":"It ="" crmo="" (paar)"},{"productid":"3193","productname":"It ="" milk="" same ="" flip-off="" productid":"226167","productname":"It ="" value="[{" /> 

任何人都知道爲什麼這是happeni NG?

回答

2

問題是你保存字符串的方式,你必須選擇你,否則用js不知道是哪裏的字符串結尾並啓動行情的類型。

在你的問題就應該是這樣的:

String productIDs = "[{'productID':'226167','productName':'It is my life (Bingo)'},{'productID':'3193','productName':'It is your name (jingo)'},{'productID':'273838','productName':'It's the same milk/Butter i drink/ate yesterday'}]" 

您還可以使用\"而不是'但是,對我來說,是一個很大較爲混亂。

編輯

您可以使用下面的代碼做到這一點:

strUWantToChange.replace('"',"'"); 
+0

如何在Java中取代所有「by」.. –

+0

問題是你從哪裏得到它,你總是可以用相反的方式來做...把'''放在字符串的外面,'''放在裏面......另請參閱編輯... – Nayish

1

如果您的字符串中有引號,則需要在將其粘貼到HTML之前將其轉義。

0

試試這個:

String productIDs = "[{\"productID\":\"226167\",\"productName\":\"It is my life (Bingo)\"},{\"productID\":\"3193\",\"productName\":\"It is your name (jingo)\"},{\"productID\":\"273838\",\"productName\":\"It's the same milk/Butter i drink/ate yesterday\"}]"; 
1

由於已經通過其他的答案說,報價必須轉義。這些不是唯一應該逃脫的角色。 <,>,'&應系統地在HTML中轉義。風險是

  • 無效HTML
  • 破頁面
  • 跨站腳本攻擊和安全漏洞

每當你必須顯示你是沒有絕對的把握,它不包含任何數據這些字符(例如:直接或間接來自用戶的數據,一般的自由文本數據)都會轉義該數據。

  • 的JSTL <c:out>標籤:

    這是通過兩個簡單的構造完成,在JSP

  • 的JSTL fn:escapeXml EL功能:${fn:escapeXml(productIDs)}

小腳本不應當被使用多年JSP。使用JSTL,其他自定義標籤和EL。