ajax提交含有html数据时的处理方法

      这两天在做一个文章内修改的功能,由于前端选用的Extjs控件库,于是就使用Ext.form.HtmlEditor.

  在使用ajax提交数据的时候,需要提交包含有html代码的数据。这时候问题就来了,不管是对数据不编码,用escape()编码、encodeURI()编码还是用encodeURIComponent()编码,提交数据是,服务器都会报错(500错误),估计是某些这些编码函数无法编码的字符造成的,

正好在网上发现了一个干货,即自己写一个javascript函数,用来替换特殊字符,服务端接受后再反编码回来就可以了。函数如下:

前台处理(js):

function ajax_encode(str)
{
    str = str.replace(/%/g,"{@bai@}");
    str = str.replace(/ /g,"{@kong@}");
    str = str.replace(/</g,"{@zuojian@}");
    str = str.replace(/>/g,"{@youjian@}");
    str = str.replace(/&/g,"{@and@}");
    str = str.replace(/\"/g,"{@shuang@}");
    str = str.replace(/\'/g,"{@dan@}");
    str = str.replace(/\t/g,"{@tab@}");
    str = str.replace(/\+/g,"{@jia@}");
    return str;
}
View Code

 

后台处理(C#):

public static string ajax_decode(string str, bool bsql)
{
    str = str.Replace("{@bai@}", "%");
    str = str.Replace("{@dan@}", "'");
    str = str.Replace("{@shuang@}", "\"");
    str = str.Replace("{@kong@}", " ");
    str = str.Replace("{@zuojian@}", "<");
    str = str.Replace("{@youjian@}", ">");
    str = str.Replace("{@and@}", "&");
    str = str.Replace("{@tab@}", "\t");
    str = str.Replace("{@jia@}", "+");
    if(bsql) str = str.Replace("'", "''");
    return str;
}
public static string ajax_decode(string str)
{
    return ajax_decode(str, true);
}
View Code

 

参考:http://blog.jiqila.com/post/172/

posted @ 2013-07-13 13:27  智客工坊  阅读(3030)  评论(0编辑  收藏  举报