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

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

关于encodeURIComponent()函数的参考资料

http://www.cnblogs.com/tylerdonet/p/3483836.html

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值