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 相关文章推荐
使用户点击后退按钮使效三行代码
Jul 07 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
原生的html元素选择器类似jquery选择器
Oct 15 Javascript
js实现延迟加载的方法
Jun 24 Javascript
利用jQuery实现打字机字幕效果实例代码
Sep 02 Javascript
JavaScript递归操作实例浅析
Oct 31 Javascript
JavaScript实现求最大公共子串的方法
Feb 03 Javascript
webpack打包js的方法
Mar 12 Javascript
使用layer.msg 时间设置不起作用的解决方法
Sep 12 Javascript
JavaScript监听触摸事件代码实例
Dec 30 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 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 Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
php header函数的常用http头设置
2015/06/25 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
2017/08/23 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
vue2.0 路由模式mode="history"的作用
2018/10/18 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
Python快速从注释生成文档的方法
2016/12/26 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Django CBV类的用法详解
2019/07/26 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
pandas针对excel处理的实现
2021/01/15 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
linux面试题参考答案(5)
2014/09/01 面试题
医学类导师推荐信范文
2013/11/19 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python