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

xiaoxiao2021-02-28  41

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

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

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

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

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

就可以正常提交了

转载请注明原文地址: https://www.6miu.com/read-2630591.html

最新回复(0)