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 相关文章推荐
js open() 与showModalDialog()方法使用介绍
Sep 10 Javascript
JavaScript类属性的访问方式详解
Feb 11 Javascript
javascript表单控件实例讲解
Sep 13 Javascript
JavaScript仿网易选项卡制作代码
Oct 06 Javascript
jQuery 如何实现一个滑动按钮开关
Dec 01 Javascript
原生js实现吸顶效果
Mar 13 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
Mar 21 Javascript
基于JavaScript实现百度搜索框效果
Jun 28 Javascript
使用vue-router完成简单导航功能【推荐】
Jun 28 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 Javascript
JavaScript图片旋转效果实现方法详解
Jun 28 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
Nov 24 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
Python实现Linux命令xxd -i功能
2016/03/06 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
python实现canny边缘检测
2020/09/14 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
物流业务员岗位职责
2014/02/08 职场文书
店面销售职位的职责
2014/03/09 职场文书
销售口号大全
2014/06/11 职场文书
精神文明建设标语
2014/06/16 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
社区灵活就业证明
2014/11/03 职场文书
MySQL GTID复制的具体使用
2022/05/20 MySQL
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL