为兼容较旧的jQuery插件,我把jQuery版本号从2.1.x降到了1.8.x,这比加入jquery-migration插件要来得干脆。

我没把这两个版本号的的区别一一记下来,而是直接改个版本号号。降级之后页面没有报错,我也就觉得没问题。直到有一天发现数据库非常多用户生成内容乱码了。

通过一番调试,原因找到了:jQuery ajax使用的http方法,1.9.0之前用选项type指定。而1.9.0及之后用选项method(选项type为method的别名)指定:

//from jquery 1.9.0
jQuery.ajax("/action",{
method:"POST"
});
//before jquery 1.9.0
jQuery.ajax("/action",{
type:"POST"
});

当把jQuery版本号从2.1.x降到了1.8.x时,以下的代码就隐藏着一个bug,不报错但非常致命:

jQuery.ajax("/action",{
method:"POST" //buggy
});

原因是jQuery 1.8.x不认选项method,意味着jQuery终于的决定使用的http方法会是默认的"GET"

当出现乱码时。首先可能会确定服务端的字符解码有没有问题,即使服务端字符解码设置已经稳稳地应用在其它非常多项目中。

bug显露出来了,kill掉即可。但这期间bug造成的数据库不少用户生成数据乱码怎么办。承认技术失误并向用户道歉?

非常久曾经听说有软件能够将乱码恢复成正常文本,这说明恢复还是有希望的。现已知乱码是因未对URI进行解码造成的,因此解码之后应该就能恢复成正常文本。

照着这样的思路我把乱码内容复制出来做了个測试:

decodeURIComponent(escape("一直想买一个,可惜没有米啊•Š"))

居然能够恢复出正常文本!

于是写了个小程序,从数据库查出乱码内容。再将其恢复成正常文本。最后写回数据库。

有时候降级不只改个版本号号那么简单,一些代码得跟着同步调整。

最新文章

  1. javascript_core_04之数组API
  2. 如何在yii的controller中调用外部action
  3. SpringMVC 手动控制事务提交
  4. Android Tips – 填坑手册
  5. vi, vim 基本使用(1)
  6. JavaWeb学习记录(十四)——商城购物之字符串拼接实现最近浏览商品和购物车的功能
  7. hdu 5407
  8. ALM11 OTA API接口的问题
  9. Android 子线程请求ASP.NET后台
  10. python_Opencv_读取视频
  11. [转]MFC 加载其他的应用程序
  12. JAVA常识积累
  13. sizeof与strlen的不同
  14. 谁还没遇上过NoClassDefFoundError咋地——浅谈字节码生成与热部署
  15. Tools (StExBar vs Cmder)which can switch to command line window on context menu in windows OS
  16. topcoder srm 698 div1 -3
  17. CentOS 5.5 防火墙开启、关闭以及开放指定端口
  18. hql语句的case when then else end问题
  19. loj#101. 最大流 dinic+当前弧
  20. KNN识别手写数字

热门文章

  1. Gradle的简介与安装
  2. Android项目实战手机安全卫士(02)
  3. ThreadLocal用法和实现原理(转)
  4. [置顶] 正则表达式应用:匹配email地址
  5. IE6 png图片实现半透明的方法
  6. Java:Java快速入门
  7. openssl生成pem,密钥证书的创建
  8. Jackson ObjectMapper类
  9. C语言指针和数组知识总结(上)
  10. 支付宝打造公共账号业务网关, RSA密钥对生成