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 无符号右移运算符
Apr 17 Javascript
Javascript 中文字符串处理额外注意事项
Nov 15 Javascript
JSQL  一个 web DB 的封装
May 05 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
Aug 24 Javascript
JavaScript 验证码的实例代码(附效果图)
Mar 22 Javascript
js对图片base64编码字符串进行解码并输出图像示例
Mar 17 Javascript
jQuery中$(function() {});问题详解
Aug 10 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
Oct 15 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
Oct 13 Javascript
element ui table 增加筛选的方法示例
Nov 02 Javascript
node.js域名解析实现方法详解
Nov 05 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
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
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
javascript数字数组去重复项的实现代码
2010/12/30 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
Python实现的批量下载RFC文档
2015/03/10 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python调用命令行进度条的方法
2015/05/05 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
简单了解python的一些位运算技巧
2019/07/13 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
2016/12/07 面试题
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
竞选班长演讲稿
2013/12/30 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
跑操口号
2014/06/12 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python