一個傳遞字符串如何從asp.net 服務器端包含'\'到javascript函數?一個傳遞字符串如何從asp.net服務器端向Javascript函數中包含''?
在客戶端檢查參數後,所有'\'都替換爲'',甚至, 在服務器端用'%5C'代替'\'不起作用。
有什麼想法?
一個傳遞字符串如何從asp.net 服務器端包含'\'到javascript函數?一個傳遞字符串如何從asp.net服務器端向Javascript函數中包含''?
在客戶端檢查參數後,所有'\'都替換爲'',甚至, 在服務器端用'%5C'代替'\'不起作用。
有什麼想法?
我得到了解決方案。
parameter.Replace("\\", "\\\\")
解決它。
\
是一個特殊字符 - 基本上它「逃脫」後的字符。嘗試通過\\
來代替。順便說一句 - 如果你使用的是C#,你可以在字符串之前使用@字符,以避免需要將它作爲雙斜線來傳遞。
string path = @"c:\documents\mydocuments";
您是否使用ASP.NET編寫JavaScript字符串文字?即。是這樣的:
Page.RegisterStartupScript("foo",
"<script type='text/javascript'>"+
" var bar= '"+myBarValue+"';"+
"</script>"
);
如果是這樣,一個分隔的JavaScript字符串裏面,那麼你嵌入文本文字,你必須使用遵循字符串文本中的語法的逃脫方案。特別是文本中的任何\
字符都必須使用\\
進行轉義,並且任何'
字符必須替換爲\'
,因爲這是在這種情況下使用的分隔符(JavaScript可以使用任何類型的引號來分隔字符串)。
更重要的是,如果您像上例中那樣使用內聯<script>
塊,則實際上是將文本嵌入到HTML元素的字符串文本中,因此您也必須執行一些HTML轉義。特別是你必須分解文本中的任何</
序列,因爲那會結束腳本塊。另外,在XHTML中,沒有CDATA元素,因此您還必須使用&符號 - 在文本中轉義任何<
或&
字符,但這樣會使其與傳統HTML解析器不兼容。因此,爲了解決所有這些問題,最好使用JavaScript字符串文字轉義,將<
替換爲\x3C
和&
以及\x26
。
理想情況下,你會做的就是將簡單的字符串傳遞給JSON編碼器庫,這會爲JavaScript適當轉義它。但是我不知道一個.NET會像上面那樣爲你轉義HTML,所以你仍然需要一些替換。