簡體   English   中英

引用C#變量時如何處理JavaScript中的雙引號

[英]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中間語句。

雙引號必須表示為&quot; 以雙引號分隔的屬性值中。

使用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.

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