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类代码
Jun 27 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
javascript得到当前页的来路即前一页地址的方法
Feb 18 Javascript
jquery实现的一个文章自定义分段显示功能
May 23 Javascript
js实现网页定位导航功能
Mar 07 Javascript
微信小程序 合法域名校验出错详解及解决办法
Mar 09 Javascript
详解angularjs获取元素以及angular.element()用法
Jul 25 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
Jul 19 Javascript
Vue.directive使用注意(小结)
Aug 31 Javascript
微信小程序批量上传图片到七牛(推荐)
Dec 19 Javascript
原生js实现日期选择插件
May 21 Javascript
JS不要再到处使用绝对等于运算符了
Apr 30 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
mysql limit查询优化分析
2008/11/12 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
Javascript----文件操作
2007/01/18 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python生成器表达式和列表解析
2016/03/10 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
聘任书格式及范文
2015/09/21 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
《青山不老》教学反思
2016/02/22 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
z-index不起作用
2021/03/31 HTML / CSS
Go语言实现Snowflake雪花算法
2021/06/08 Golang