您的位置:首页 > 运维架构 > 网站架构

网站用户异步登录时出现特殊符号丢失

2015-11-23 16:08 579 查看
 做网站的一个异步登录时用的 $.post();方法时

当密码存在#&+等特殊符号时会出现数据丢失

例如 123#445     后台接受到的数据变为123 ,123+++  后台接受的数据为123

js代码

1:原来出现错误的写法 

              var logining = #{jsAction @URL(':name', ':passwordtc', ':code', ':randomID')/}
$.post(logining({name:encodeURI(nametc),passwordtc:encodeURI(passwordtc),code:encodeURI($("#cod                                  etc").val()),randomID:encodeURI($("#randomIDtc").val())}),function(data){
if("" != data){
layer.alert(data, {icon: 6});;
return;
}
$("#login_box").hide();
location.reload(true);

});

后面在网上的相关资料 得到两个方法

方案一

$.ajax({
url:"url",
type:"POST",
data:{
"name":encodeURI(nametc),
"passwordtc":encodeURI(passwordtc),
"code":encodeURI($("#codetc").val()),
"randomID":encodeURI($("#randomIDtc").val())
},
  success : function(data) {
  if("" != data){
layer.alert(data, {icon: 6});;
return;
}
$("#login_box").hide();
location.reload(true);
  
  },
error : function() {
layer.alert('对不起,出现错误', {icon: 6});
}
});

  将提交数据 以json的数据形式提交 就不会出现问题

方案二

[javascript] 
var post_Str = apply_name.replace(/\+/g, "%2B");//"+"转义   
var post_Str= post_Str.replace(/\&/g, "%26");//"&" 
var post_Str= post_Str.replace(/\#/g, "%23");//"#" 

将数据中的特殊符号进行转译 

后台 接收后再转译回来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息