[英]How to deal with double quotes in JavaScript when referencing a C# variable
我需要調用一個JavaScript函數,該函數需要一個字符串變量,該字符串變量中可能帶有雙引號。 這是將變量傳遞到JavaScript函數的方法:
onclick="copyDescription('<%# Eval("Description") %>');"
問題在於該函數永遠不會觸發,因為它不喜歡'Description'變量中的引號。
例如,“描述”可以是:
VALVE BALL 1" 2000 RP THRD NACE SS BALON LS-10561
如果我從上述說明中刪除雙引號,則效果很好。 我通過執行以下操作對此進行了進一步測試,並且按預期工作:
$(document).ready(function () {
var str = 'VALVE BALL 1" 2000 RP THRD NACE SS BALON LS-10561';
copyDescription(str);
});
我嘗試通過JavaScript進行.replace('“','\\”')和.replace('“','')的操作,但均不起作用。我可以通過修改將值獲取為的C#代碼來刪除引號刪除雙引號就可以了,只是不能通過JavaScript,有什么想法嗎?
問題在於"
正在終止HTML屬性並切斷了JS中間語句。
雙引號必須表示為"
以雙引號分隔的屬性值中。
使用Microsoft反跨站點腳本庫並在字符串上調用函數JavaScriptEncode()
我所使用的解決方案是使用我的問題的答案:
onclick="copyDescription('<%# Server.HtmlEncode(Eval("Description").ToString()) %>');"
Server.HtmlEncode可以滿足我的需要。
感謝大家的幫助和解答!
將該Eval調用改為輸出JSON或純文本。 它將處理所有嵌入式Javascript元字符。 我不知道如何在C#中完成,但是在PHP中很簡單:
onclick="copyDescription(<?php echo json_encode(...) ?>);"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.