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

2018-05-03编程教程
91

在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);

The End
ajax

相关推荐

Ajax中文传值出现乱码的解决办法
Ajax技术的核心为Javascript,而javascript使用的是UTF-8编码,因此在页面采用GBK或者其他编码,同时没有进行编码转换时,就会出现中文乱码的问题。 以下是分别使用GET和POST方式传值,并且页面采用GBK和UTF-8编码在IE和FF下的不同测试结果和出现乱码时的解...
2022-11-19 编程教程
364

jqueryMobile页面跳转ajax载入与缓存问题
页面跳转ajax载入在jqueryMobile的开发当中我们经常会遇到一些问题: 1、无法跳转到后一个页面 2、跳转到后一个页面事件或样式失效,需刷新一次可恢复正常 原因:JQM,为了是页面访问速度加快,每一个链接都是通过AJAX 方式进行载入,不会加载新页面head 区...
2018-05-30 编程教程
67

PHP怎么使用AJAX返回登录成功信息!
以下是完整参考代码,index.php为登录页面,ajax.php为处理ajax无刷新请求页面。 index.php !DOCTYPE htmlhtml head meta charset=utf-8 / title登录/title script type=text/javascript src=http://cdn.bootcss.com/jquery/2.1.4/jquery.min.js/script /hea...
2018-05-07 编程教程
118

如何设置jquery的ajax方法为同步
Ajax请求默认的都是异步的 如果想同步 async设置为false就可以(默认是true) var html = $.ajax({ url: some.php, async: false}).responseText; 或者在全局设置Ajax属性 $.ajaxSetup({ async: false }); 再用post,get就是同步的了...
2018-05-03 编程教程
191

ajax请求中传递的参数中如果含有特殊字符怎么处理?
在JQUERY AJAX开发中遇到了下面的一个问题,在执行AJAX请求的时候,需要传递一个50%的参数,而这个参数中含有特殊字符%。这样的话就会出现问题了,我们知道服务器在发送请求的时候,会将url中的参数转化成类似于%2C%2F%3F%3A%40%26%3D%2B%24%23,所以在我们...
2018-05-03 编程教程
91

详解JSON对象与字符串之间转换实例
在开发的过程中,如果对于少量参数的前后台传递,可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,这样后台 接受的时候Request多个很麻烦,此时要按照类的格式或者 集合的形式进行传递。 例如:前台按类的格式...
2018-05-02 编程教程
182