jQuery使用ajax方法解析返回的json数据功能示例


Posted in Javascript onJanuary 10, 2017

本文实例讲述了jQuery使用ajax方法解析返回的json数据功能。分享给大家供大家参考,具体如下:

最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返回的data数据,有时候可以直接作为json数据使用,可有时候又不行。查了些资料,解释如下:

$.ajax({
  url: ajaxurl,
  type: "POST",
  success: function(data){
   //假设返回的json数据里有status及info2个属性
   //有时候可以直接ajaxobj.status或者ajaxobj["status"]去访问
   //但有时候,却要通过eval()或者 $.parsejson();才可以通过ajaxobj.status访问,而且这种情况下,需要是complete而不是success
   ajaxobj=eval("("+data+")");
   //或者$.parsejson()
   //var ajaxobj = $.parsejson(data);
   if(ajaxobj.status=="0")
   {
    alert("请登陆.");
   }
   else if(ajaxobj.status=="1")//未绑定微博
   {
    alert(ajaxobj.info);
   }
   return true;
  },
  error:function(ajaxobj)
  {
     if(ajaxobj.responseText!='')
     alert(ajaxobj.responseText);
  }
});

先说明第一种情况:

能够直接 data.属性名访问的情况,服务器端代码一定是直接return的一个常量字符串。

什么是常量字符串呢,常量字符串就是指直接用“”组成的字符串,没有定义String 变量直接把一串“”print到前台的情况,就可以直接data.属性名访问,而且jquery端只要写success就可以拿到。

下面是造成要eval并且不能进入success的原因:

这种情况是因为服务器端向外print的时候是一个String对象,通常此类问题在我的代码里是因为后台json比较复杂,在组织的时候我用到了StringBuffer,然后最后print的时候print的是StringBuffer对象的toString,所以就相当于print了一个String对象

这种情况下jquery的ajax方法就不会进入success方法,只能用complete接收,并且想要解析data里的json数据的话,必须对data.responseText进行eval ()或者 $.parsejson();

除此两点,还有需要注意的是,如果你使用的是jq1.4,那么他对json的格式有着更严格的要求,所有的key和属性都要用双引号标注起来,虽然key不用双引号原生的js是允许的,但是jq1.4似乎有这个要求。

以上是我个人的想法跟理解,若有不同见解欢迎指教.

Javascript 相关文章推荐
javascript面向对象编程(一) 实例代码
Jun 25 Javascript
自己动手制作jquery插件之自动添加删除行的实现
Oct 13 Javascript
ajax异步刷新实现更新数据库
Dec 03 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
JavaScript iframe数据共享接口实现方法
Jan 06 Javascript
jquery if条件语句的写法
May 19 Javascript
angular2路由切换改变页面title的示例代码
Aug 23 Javascript
electron demo项目npm install安装失败的解决方法
Feb 06 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
深入理解Vue 组件之间传值
Aug 16 Javascript
Openlayers实现地图全屏显示
Sep 28 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 Javascript
ajax实现动态下拉框示例
Jan 10 #Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
Jan 10 #Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 #Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 #Javascript
详解vue之页面缓存问题(基于2.0)
Jan 10 #Javascript
jQuery验证表单格式的使用方法
Jan 10 #Javascript
Html5 js实现手风琴效果
Apr 17 #Javascript
You might like
ip签名探针
2006/10/09 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
js加解密 脚本解密
2008/02/22 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
浅析Python函数式编程
2018/10/06 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
python是否适合网页编程详解
2019/10/04 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
通过实例解析Python调用json模块
2019/12/11 Python
如何基于线程池提升request模块效率
2020/04/18 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
十岁生日父母答谢词
2014/01/18 职场文书
党校培训自我鉴定
2014/02/01 职场文书
五型班组建设方案
2014/02/10 职场文书
《落花生》教学反思
2014/02/25 职场文书
小露珠教学反思
2014/04/30 职场文书
爱国口号
2014/06/19 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
HTML基础详解(下)
2021/10/16 HTML / CSS
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技