日期:2014-05-16  浏览次数:20721 次

jQuery中post的问题
一个文本域<textarea  id="code_code" name="code_code"></textarea>

提交的时候,用jQuery的post函数
$.post("uploadcode.aspx", {codetext:$("#code_code").val() }, back);

当文本域中出现  <a 等字样的时候,就无法执行成功,服务器端收不到任和消息。
我测试了很多。。单引号双引号斜杠啥的都行。。。就是一个小于号再加一个字母就不行。。


求讲解

------解决方案--------------------
对<进行转义:
1.
$.post("uploadcode.aspx", {codetext:escape($("#code_code").val()) }, back);
这个影响较多,不只是<,如果试用没问题可以用,有问题就用下面方法

2.
$.post("uploadcode.aspx", {codetext:$("#code_code").val().replace("<","&lt;") }, back);

------解决方案--------------------
如果是asp.net4还需要加入
<httpRuntime requestValidationMode=”2.0″ />


------解决方案--------------------
如果VALUE里含有回车换行,escape会保留它们,变成%0D%0A.
你后台decode可能用得不对,所以解码的结果就有问题了。
可以利用ASP的混合编程特点,用JS语法写个函数,调用与escape配合的unescape,然后调用这个函数。系铃者去解铃,就不会有错了。

<script   language   =   javascript   runat=server>
function   Unc(strCode)
{
        return   unescape(strCode);
}
</script>
<%
      接收的变量   =   Unc(接收的变量)
%> 
------解决方案--------------------
换行用正则来解决,换行符用文本‘\n’代替
var reg = new RegExp("\n","g");
var ncontent = requestValue.replace(reg,"\\n");