$.ajax方法中,参数带有`&`导致参数缺失的问题

今天修复bug的时候, 发现从页面存储一个网址,但是后台总是报错.一开始还以为是数据库中表的长度限制,结果发现表中的限制长度是250,足够一个网址了.

后面找了半天发现是传入后台的参数Param转Json时发生异常,然后我检查Param,发现原来的一段网址只剩一半了:

这里写图片描述

仔细检查,原来是$.ajax自动将param中的&作为param的条件分隔符,分成了若干的条件,但是这样完整的Json结构{key:val&ue,key:value}就被破坏成{key:value,key:value}

解决办法就是在js中,将我们的param进行一次替换,把这些有特殊意义的字符转义

// 将param中的&,%,+等特殊字符进行替换
 if(param != null){
    //注:+ 是正则表达式的元字符,需要用 \ 转义;& 可以不用转义。
    param=param.replace(/\+/g, "%2B");
    param=param.replace(/%/g, "%25");
    param=param.replace(/&/g, "%26");
} 

就可以正常提交了
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zzzgd_666/article/details/80362618