ajax请求中传递的参数中如果含有特殊字符怎么处理?

在JQUERY AJAX开发中遇到了下面的一个问题,在执行AJAX请求的时候,需要传递一个50%的参数,而这个参数中含有特殊字符%。这样的话就会出现问题了,我们知道服务器在发送请求的时候,会将url中的参数转化成类似于%2C%2F%3F%3A%40%26%3D%2B%24%23,所以在我们
在JQUERY AJAX开发中遇到了下面的一个问题,在执行AJAX请求的时候,需要传递一个“50%”的参数,而这个参数中含有特殊字符%。这样的话就会出现问题了,我们知道服务器在发送请求的时候,会将url中的参数转化成类似于“%2C%2F%3F%3A%40%26%3D%2B%24%23”,所以在我们执行含有这样特殊字符的ajax请求的时候就会出现错误,因为我们传递的参数可能发生了变化,也可能由于参数本身中就含有特殊字符所以系统没有办法编译它。
 
可能会抛出这样的一个异常:
 
警告: Parameters: Character decoding failed. Parameter skipped.
 
解决的办法:
 
1、改变传递参数的形式:
 
例如:
 
var testUrl ="param1="+cond1+"&params2="+cond2 ;
$.ajax({
    type:"POST",
    url:"testUrl",
    data:allParams,
    success:function(data){

    }
});
 
在上面这段代码中
 
如果cond2 = “50%”,那么这个参数中就有了%特殊字符,这样执行的话可定时会有问题。怎么修改呢?
 
我们说过了改变传递参数的形式
 
修改data部分,以json格式的数据传递,这样就可以避免由于特殊字符引起的错误参数问题:
 
data:{‘param1’:cond1,’param2’:cond2}
 
2、还是按照例子1中的传递方式传递参数,只不过为了达到我们的目的,我们对要传递的参数进行编码。
 
例如,如果还是例子1,我们把testUrl修改成下面这种写法,使用encodeURIComponent(urlString)函数对url中传递的参数做编码操作就可以了:
 
var testUrl ="param1="+cond1+"&params2="+encodeURIComponent(cond2);

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有Header had all ready send by的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很多,只要
第一种方法:用php的strpos() 函数判断字符串中是否包含某字符串的方法 if(strpos(www.genban.org,genban) !== false){ echo 包含genban; }else{ echo 不包含genban; } 第二种 使用了explode 用explode进行判断PHP判断字符串的包含代码如下: ?php $name = 00
/u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字) /i 表示不区分大小写(如果表达式里面有 a, 那么 A 也是匹配对象) /s 表示将字符串视为单行来匹配
很多时候onclick事件是伴随着页面的跳转,也就会有相应的参数传递案。案例如下所示: a href=# onclick=showTable(this)123/a #为你要跳转的页面 这个时候你传的参数就是123 function showTable(data){ alert(data.innerHTML);//js写法 alert($(data).html()
header(content-type:application/json;charset=utf8);$results = array(); while ($row = mysql_fetch_assoc($result_query)) { $results[] = $row; } if($results){ echo json_encode($results); }else{ echo mysql_error(); } 将查询到的数组存放到一个新
?php//php中生成json信息//json_encode(数组/对象)$color = array(red,blue,green); //【索引数组】echo json_encode($color),br /; //[red,blue,green]$animal = array(east=tiger,north=wolf,south=monkey); //【关联数组】echo json_encode($animal),br /