需要提交一个数字签名串,感觉数据量有点大,用的JQuery的Ajax方法的Post类型。结果问题来了,入库的数据签名无法还原,经比对是串中的“+”,被换成“ ”(空格)了,记得用form的get提交会引起该问题,看了一下代码,data中的传值方式如下, data:key1=value1&key2=value2,改为了 data:{key1:value1,key2:value2}的方式,就好了,不解。
看了一下JQuery,Ajax部分的源码,原来是 JQuery对于是string型的data,就不再处理,而对非string型的data再用&做连接的时候 做了替换处理,如下:s.join("&").replace(/%20/g, "+");,哦,原来如柴!
以后用js的机会很多,对于我这种对js只算得上一知半解的人,要多读一些成熟的js源码才行。
本文介绍了一个关于使用JQuery Ajax POST方法时遇到的问题,即数字签名串中的‘+’号被转换为空格导致数据无法正确还原。通过调整传递参数的方式解决了这一问题,并深入分析了JQuery Ajax源码中的字符串处理逻辑。

1万+

被折叠的 条评论
为什么被折叠?



