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

时间:2016-01-07 09:04:16

标签: javascript asp.net

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

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

如果strAgentCompanyName不包含引号(单引号,双引号),则上面的代码可以正常工作,但是在其中它不起作用。 例如。如果代理公司名称提供为:David&#34; Mike&#34; Bela解决方案然后它会引发错误 它不是Mike关键字附近的字符串。

  

详情=&#34; AgentLastName = David&#34; Mike&#34; Bela解决方案&#34;

如何处理单/双引号?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

使用此功能,您将在内存中创建DIV元素,将值设置为文本并获取转义HTML。