如果请求的字符串包含引号,为什么encodeURIComponent不工作

Why encodeURIComponent not working if requested string contains quote?

本文关键字:为什么 encodeURIComponent 工作 请求 字符串 包含引 如果      更新时间:2023-09-26

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

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

如果strAgentCompanyName不包含引号(单引号、双引号),则上面的代码可以正常工作,但其中包含引号则不起作用。例如,如果代理公司名称提供为:David"Mike"Bela解决方案,则会将错误提示为Mike关键字附近的字符串不合适。

Details="AgentLastName=David"Mike"Bela solution"

如何处理单引号/双引号?

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

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

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

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

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