ajax 访问坑

ajax 访问 json 格式不进 success

原因

  1. 返回的数据类型一定要符合定义的数据类型。即如果你定义的 dataType 是 json 类型的,那么返回来的数据一定是 json 才可以,不然就会执行 error 。
  2. 需要特别的注意返回的 JSON 数据是否是严格的 JSON 格式.
  3. 也应该严重关切当后台返回的是一个 List 数据(List 当中的数据是 Json 格式)时,有没脏数据即不是严格的 JSON 格式。
    很隐蔽的可能是数据某一个字段中在开始或末尾含有特殊字符,以” 回车键”、”Tab 键” 等
  4. 原因是 ajax 请求跨域了,解决方法参见上一篇日志,ajax 跨域
  5. 也有可能是跨域时请求头的问题,比如请求头如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Accept:*/*
    Accept-Encoding:gzip, deflate, sdch
    Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
    Access-Control-Request-Headers:x-requested-with
    Access-Control-Request-Method:GET
    Connection:keep-alive
    Host:10.108.226.92:9999
    Origin:null
    User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36
    如果存在 Access-Control-Request-Headers:x-requested-with 这种自定义请求头(一般是 jquery 自己加的,为什么加我就不清楚了),此时在服务器响应头设置”Access-Control-Allow-Headers”:”X-Requested-With” 即可。

这类隐蔽错误的规避措施

就是好的编程习惯:
  • 对于在页面填写入库的数据最好强制性的做,去空操作 <利用客户端最好>。
  • 特殊的业务需注意特殊字符。
    这样还不够,因为在开发过程中测试或开发人员自己在数据库中手动添加数据,可能会多加了空格等,导致程序调试,测试带来了麻烦。 这时就需要考虑在后台代码对获取的数据做处理。