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 不能释放内存.
Sep 07 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
Apr 15 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
Mar 27 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
May 15 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
Apr 04 Javascript
jQuery插件开发发送短信倒计时功能代码
May 09 jQuery
浅谈关于axios和session的一些事
Jul 13 Javascript
实例讲解javascript实现异步图片上传方法
Dec 05 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
Jun 26 Javascript
JS闭包原理与应用经典示例
Dec 20 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 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
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
javascript 闭包
2011/09/15 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
详解python中的线程
2018/02/10 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
小学课外活动总结
2014/07/09 职场文书
产品委托授权书范本
2014/09/16 职场文书
生产现场禁烟通知
2015/04/23 职场文书
2015年女职工工作总结
2015/05/15 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
靠谱的活动总结
2019/04/16 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
PHP使用非对称加密算法RSA
2021/04/21 PHP
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript