界面传值是这样的
[{"ButtonType":"0","Content":"速速点击玩游戏赢小谷家门票啦~<a href=\"http://182.92.186.247/xxxxnpan/huaqiaocheng/home.jsp?vtype=2\">免费旅行</a>"}]
var Content = $(this).find("td:eq(1)").html();
其内容就是:
速速点击玩游戏赢小谷家门票啦~<a href=\"http://182.92.186.247/xxxxnpan/huaqiaocheng/home.jsp?vtype=2\">免费旅行</a>
这个就是包含html标签的变量
现在我的问题就是,利用json传值,会报错,说不能识别html标签,怎么样处理一下这个a 标签,让它传成功
吧内容编下码再传进去
把\变成\\\
哥,关键就是我不知道怎么写
ResponseMessages.splice(ResponseMessages.length, 0, ResponseMessage);
这个ResponseMessages就是它:
[{"ButtonType":"0","Content":"速速点击玩游戏赢小谷家门票啦~<a href=\"http://182.92.186.247/xxxxnpan/huaqiaocheng/home.jsp?vtype=2\">免费旅行</a>"}]
现在就是不知道怎么去处理这个ResponseMessages
.replace('\','\\\');在返回后替换!
它在前台传的时候就报错,根本传不到后台
@魔女小溪: 看报的什么错,如果是字符引起的,就传之前替换掉。ResponseMessage.replace格式化掉你的字符。编辑器里的东西都可以传到后台,所以你的报错肯定是字符引起的。去掉a标签,试试,一个个解决。
@惯了算了厌了: ResponseMessage是数组,没有replace方法
@魔女小溪: ResponseMessage不知道这是一个啥数组。。。那我就假设吧,第一个是这个。 ResponseMessage[1]="":"速速点击玩游戏赢小谷家门票啦~<a href=\"http://182.92.186.247/xxxxnpan/huaqiaocheng/home.jsp?vtype=2\">免费旅行</a>"}]";
ResponseMessage[1].replace('\','\\\')
@惯了算了厌了: 哦,我懂了
urlencoding编码后在传。危险字符说的是尖括号
对对对,那怎么弄呀?
那后台怎么解码
@魔女小溪: 后台urldecode就可以的
@吴瑞祥: 后台urldecode,要引入哪个dll呀?
建议贴代码吧~
var Content = $(this).find("td:eq(1)").html();
其内容就是:
速速点击玩游戏赢小谷家门票啦~<a href=\"http://182.92.186.247/xxxxnpan/huaqiaocheng/home.jsp?vtype=2\">免费旅行</a>
这个就是包含html标签的变量
现在我的问题就是,利用json传值,会报错,说不能识别html标签,怎么样处理一下这个a 标签,让它传成功
@魔女小溪: 吧Content 内容进行编码在传值
@魔女小溪: 嗯,对Content进行编码后再传递就可以了。
@幻天芒: 那不是还要在后台解码吗?但是,我用这个urldecode,要引入什么dll嘛?
@conan_lin: urlencoding($(this).find("td:eq(1)").html());
是这样吗?
@魔女小溪: 对 试试看
@conan_lin: 那后台用哪个解码呢?
Server.UrlDecode这个嘛?
@魔女小溪: en
@魔女小溪:不过好像记得后台不用解码 ,具体忘了 试试吧
@conan_lin: urlencoding($(this).find("td:eq(1)").html());
这个错误,没有urlencoding这个方法
@conan_lin: 报错了,提示说没有这个方法
@魔女小溪: http://www.cnblogs.com/jazzka702/archive/2009/07/09/1519782.html
@conan_lin: 现在编码已经传过去了,就是在后台解码有点问题了
@魔女小溪:
服务器端:
Server.UrlEncode()方法对Url进行编码
Server.UrlDecode()方法 对url进行解码
Js方法:
escape() 函数可对字符串进行编码;
unescape() 函数可对字符串进行解码;
定义和用法
unescape() 函数可对通过 escape() 编码的字符串进行解码。
定义和用法
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
简单例子:
js编码:
Var name= escape ($(“#txtname”).value());
var strurl =login.aspx+ "?opt=add&companyname=" + name ;
$.ajax({
type: "POST",
cache: true,
url: strurl,
data: "opt=skip",
success: function (json) {
//成功方法
},
error: function (e) { }
});
解码:服务器端的解码简单:
String name= Server.UrlDecode(Request.QueryString["companyname "].ToString());
@魔女小溪: %E9%80%9F%E9%80%9F%E7%82%B9%E5%87%BB%E7%8E%A9%E6%B8%B8%E6%88%8F%E8%B5%A2%E5%B0%8F%E8%B0%B7%E5%AE%B6%E9%97%A8%E7%A5%A8%E5%95%A6~%3Ca%20href=%22http://182.92.186.247/tianjin_dazhuanpan/huaqiaocheng/home.jsp?vtype=2%22%3E%E5%85%8D%E8%B4%B9%E6%97%85%E8%A1%8C%3C/a%3E
全都是这样的了
@魔女小溪: 编码方式有很多种 不行可以试试其他的编码方式 有的编码对特殊的字符不感冒的
@魔女小溪: ok?
@conan_lin: 呜呜呜,是我太粗心了,我滴神那我怎么那么蠢呀!我觉得我真心不像个女的了!老天呀!为啥我那么粗心,现在已经解决了,大哥,谢谢
@魔女小溪: 额~,淡定~ 。再简单点,还可以直接把<>给替换为<> 。后台的话,在HttpUtinity下有HtmlDecode,UrlDecode等方法。
你的a链接有效果吗...
现在是我数据传不到后台,直接在界面报错,说什么危险request
[{"ButtonType":"0","Content":"速速点击玩游戏赢小谷家门票啦~<a href=\"http://182.92.186.247/xxxxnpan/huaqiaocheng/home.jsp?vtype=2\"& gt;免费旅行</a>"}] 这段json是从后台请求出来的?
不是,是从界面拼接,要准备传到后台的
@魔女小溪: [{"ButtonType":"0","Content":"速速点击玩游戏赢小谷家门票啦~<a href=\"http://182.92.186.247/xxxxnpan/huaqiaocheng/home.jsp?vtype=2\"& gt;免费旅行</a>"}] 你拼接处href 开头多了一个 \ 然后你拼的时候注意 json格式 [{k:"",v:""}] href="*"改成href=''
href="*" 改成href='*' *代表你当前的内容
@温柔✿殺手: 额,看不懂你说什么
@魔女小溪: [{"ButtonType":"0","Content":"速速点击玩游戏赢小谷家门票啦~<a href=\"http://182.92.186.247/xxxxnpan/huaqiaocheng/home.jsp?vtype=2\">免费旅行</a>"}] 这段json你拼错了,当然报错 [{"ButtonType":"0","Content":" href='*' "}] *表示任意字符。
这样才是正确的
@温柔✿殺手: 哥,你根本就没看懂我的问题是什么,╮(╯▽╰)╭
@魔女小溪: 好吧, 不过问题还是要一步一步逐步排查,你先把json拼对再查其他的。
@温柔✿殺手: 呵呵,哥,已经解决了,谢谢你的帮忙,虽然你也没帮上忙,灭哈哈
@魔女小溪: 是什么问题啊,贴你博客上,好让以后我们遇到也能解决
标签报错而已,html标签进行转义即可,或者降低提交的asp.net页面的级别
转义:str.replace(/[<>&"]/g,function(c){return {'<':'<','>':'>','&':'&','"':'"'}[c];});
已经解决了,谢谢大哥
来晚了,问题应该解决了吧!
对内容进行编码解码能解决这个问题,不错。
我的个人习惯是代码是代码,数据是数据。就对你上面的Content的值来说吧,超链接的地址是数据,完全可以只传地址。
当然 了,对于富文本编辑器的内容我们还是得编码解码。