Ajax传参数遇到的问题 - Web 开发 / Ajax
前台:
var username = $.trim($("#username").val());
var url="getuserinfo.do?username="+username;
         $("#NumID").html("正在读取用户信息……");
		$("#GameName").html("");
		var params = null;
         $.ajax({    
			            type:"POST",    
			            url:url,    
			            dataType:"text",    
			            data:params,    
			            success:function(text){      
					    if (text == 0) {
					        $("#NumID").html("<font color='red'>该用户不存在</font>");
					        $("#GameName").html("<font color='red'>该用户不存在</font>");
					        $("#flag1").val("false");
					    }  
					    if (text !=0) {
					        var array=new Array(2);
							array=text.split("%");
							$("#NumID").html(array[0]);
					        $("#GameName").html(array[1]);
					        $("#flag1").val("true");
					    }
			            },    
			            error:function(){    
			                alert("获取信息出错");    
			                $("#flag1").val("false");
			            }    
			        });
后台:username = new String(request.getParameter("username").getBytes("iso-8859-1"),"GBK");
如果username里含有% 就会报错“警告: Parameters: Character decoding failed. Parameter skipped.”
不知道含有其他字符是不是也会报错,该如何解决
------解决方案-------------------- 那就没办法了.含有特殊符号一般都不能进行转换   
  你看我这种办法可以不楼。 你先对USERNAME进行判断,不然USERNAME中含有非法符号
如%..
 可以用正则表达式进行判断。判断以后再把指传过去
------解决方案--------------------在提交的网址中,很多双字节字符会被编码成%A5%EB,大家可以打开百度,随便搜点中文的东西,然后看地址栏:比如http://www.baidu.com/s?wd=%c0%ee%b9%fa%b2%d3&ch=&tn=shnetzone_pg&bar=
如果楼主的地址突然多出一个%,解码时就会被认为遇到该解码的东西了,尝试解码极可能失败,我打赌你的用户名如果%后面是2位十六进制字符就没事。
解决的办法有两个:
1.过滤掉%,不过从上面的情况看出来,可能楼主不愿这样做
2.在提交之前,把%变成%25就ok啦