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

来源:互联网 发布:计算机四级有用吗 知乎 编辑:程序博客网 时间:2024/04/30 10:36

 做网站的一个异步登录时用的 $.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");//"#" 

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

后台 接收后再转译回来


0 0
原创粉丝点击