今天修复bug的时候, 发现从页面存储一个网址,但是后台总是报错.一开始还以为是数据库中表的长度限制,结果发现表中的限制长度是250,足够一个网址了.
后面找了半天发现是传入后台的参数Param转Json时发生异常,然后我检查Param,发现原来的一段网址只剩一半了:
仔细检查,原来是$.ajax自动将param中的&作为param的条件分隔符,分成了若干的条件,但是这样完整的Json结构{key:val&ue,key:value}
就被破坏成{key:val
和ue,key:value}
解决办法就是在js中,将我们的param进行一次替换,把这些有特殊意义的字符转义
if(param != null){param=param.replace(/\+/g, "%2B");param=param.replace(/%/g, "%25");param=param.replace(/&/g, "%26");
}
就可以正常提交了