【问题标题】:Why encodeURIComponent not working if requested string contains quote? [duplicate]如果请求的字符串包含引号,为什么 encodeURIComponent 不起作用? [复制]
【发布时间】:2016-04-11 14:23:40
【问题描述】:

我们如何从 aspx 页面中的会话中获取用户公司名称

 var Details = "AgentCompanyName=" + encodeURIComponent("<%=((Agent_Html5.AgentClassLib.clsAgentSession)Session["UserSession"]).strAgentCompanyName%>");

如果strAgentCompanyName 不包含quote(single,double),则上面的代码可以正常工作,但是其中包含引号则无法正常工作。 例如。如果代理公司名称提供为:David“Mike”Bela 解决方案,那么它会引发错误 Mike 关键字附近的字符串不合适。

Details = "AgentLastName= David "Mike" Bela 解决方案"

单/双引号如何处理?

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    您需要在输出 javascript 之前转义双引号。这样它将是有效的语法。你应该使用类似的东西:

    <%= yourValue.Replace("\"", "\\\"") %>
    

    您还可以使用更好的 javascript 转义方式:

    var Details = "AgentCompanyName=" + $("<div/>").text("<%=yourValue%>").html(); 
    

    这样您将在内存中创建 DIV 元素,将值设置为文本并获取为转义的 HTML。

    【讨论】:

    • 嗨@Mitja Kramberger,如何处理双引号??
    • 更新为转义双引号
    • 所以我们需要像我一样处理单引号和双引号两次:&lt;%= strString.Replace("\'","\\\'").Replace("\"","\\\"")%&gt; 对吗?
    • 您只需要对双引号进行操作,因此不会出现脚本/语法错误。转义其他所有内容将由 javascript 完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多