JQuery处理json与ajax返回JSON实例代码


Posted in Javascript onJanuary 03, 2014

一、JSON的一些基础知识。

JSON中对象通过"{}"来标识,一个"{}"代表一个对象,如{"AreaId":"123"},对象的值是键值对的形式(key:value)。

 "[]",标识数组,数组内部各个数据之间通过","分割,如["AreaId":"123","AreaId":"345"]。

很多情况下是对象数组,那就是这样:

[{"AreaId":"123"},{"AreaId":"345"}]

 其实数组也是一个对象,上面的格式也可以写成这样:

{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}

这表示一个Area对象,他有两个子数据,每个子数据也是一个对象,每个子对象都是AreaId。

 JSON中字符串和字符的定义格式和一般的类C语言定义是类似的,双引号定义字符串,单引号定义字符。

JSON的键(Key)用双引号括起来,比如上面的"Area"和"AreaId",都是用双引号括起来的,在一些语言中构造JSON字符串的时候,可以使用转义字符转义双引号。

 二、javascript操作JSON字符

1、先要区分JSON字符串和JSON对象

JSON字符串:

Var strJSON = "{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}",

其实也可以写成这样:

Var strJSON = ‘{"Area":[{"AreaId":"123"},{"AreaId":"345"}]}',

这表示一个JSON字符串,由于在Js中单引号和双引号都可以表示一个字符串,所以上面第一个使用双引号和第二个使用单引号的都表示一个JSON字符串。

下面看看JSON对象

Var JSON = {"Area":[{"AreaId":"123"},{"AreaId":"345"}]},

看到了吧,JSON对象最外面是没有单引号或者双引号的,这就表示一个JSON对象。

在服务器断的脚本:

<?php
$data['id'] = 1;
$dat['name'] = "mary";
$da['red']= array_merge($data,$dat);
$data1['id'] = 2;
$dat1['name'] = "燕子";
$da['blue']= array_merge($data1,$dat1);
print_r($da);///打印出来是一个二维数组(如下)
/*
Array
(
    [red] => Array
        (
            [id] => 1
            [name] => mary
        )
    [blue] => Array
        (
            [id] => 2
            [name] => 燕子
        )
)
*/
echo json_encode($da);//输出的是一个转化成json格式的字符串,可以直接在js中用(如下)
/*
{"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}}
*/
?>

jquery脚本:

返回到js后的处理:
第一种要用到varl转化的:是字符串的时候就要用eval转化成jquery对象(如下)

var arr = '{"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}}';//u71d5u5b50这个是php中自动转换的
var dataObj = eval("("+arr+")");//这里要加上加好括号和双引号的原因我也不知道,就当是json语法,只能死记硬背了
  $.each(dataObj,function(idx,item){   
   //输出  
   alert(item.id+"哈哈"+item.name);   
})

第二种:不需要转化的:

var arr = {"red":{"id":1,"name":"mary"},"blue":{"id":2,"name":"u71d5u5b50"}};
  $.each(arr,function(idx,item){     
   //输出
   alert(item.id+"哈哈"+item.name);
})

循环也有两种方法:
//方法一:

$.each(arr,function(idx,item){     
   //输出
   alert(item.id+"哈哈"+item.name);
})

//方法二:

for(var key in arr){
  alert(key);
  alert(arr[key].status);
 }

大家可以试试效果。

ajax返回JSON时的处理方式

 1,使用普通的aspx页面来处理
       本人觉得这种方式处理起来是最简单的了,看下面的代码吧

$.ajax({ 
           type: "post", 
                                        url: "Default.aspx", 
                                        dataType: "json", 
                                        success: function (data) { 
                                                $("input#showTime").val(data[0].demoData); 
                                        }, 
                                        error: function (XMLHttpRequest, textStatus, errorThrown) { 
                                                alert(errorThrown); 
                                        } 
                                });
 

         这里是后台传递数据的代码
 

Response.Clear(); 
                        Response.Write("[{"demoData":"This Is The JSON Data"}]"); 
                        Response.Flush(); 
                        Response.End();
 

这种处理的方式将传递过来的数据直接解析为json数据,也就是说这里的前台js代码可能直接把这些数据解析成json对象数据,而并非字符串数据,如data[0].demoData,这里就直接使用了这个json对象数据

Javascript 相关文章推荐
为JavaScript添加重载函数的辅助方法
Jul 04 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
用JS做的简单的可折叠的两级树形菜单
Sep 21 Javascript
ExtJs纵坐标值重复问题的解决方法
Feb 27 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
Sep 06 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
js代码实现下拉菜单【推荐】
Dec 15 Javascript
AngularJs 常用的过滤器
May 15 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
Aug 09 Javascript
JavaScript实现点击自制菜单效果
Feb 02 Javascript
jquery.post用法示例代码
Jan 03 #Javascript
简单的代码实现jquery定时器
Jan 03 #Javascript
jquery将一个表单序列化为一个对象的方法
Jan 03 #Javascript
jQuery的DOM操作之删除节点示例
Jan 03 #Javascript
JQuery中dataGrid设置行的高度示例代码
Jan 03 #Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
Jan 03 #Javascript
js传中文参数controller里获取参数乱码问题解决方法
Jan 03 #Javascript
You might like
php whois查询API制作方法
2011/06/23 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
javascript中正则表达式语法详解
2020/08/07 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
Python的requests网络编程包使用教程
2016/07/11 Python
利用aardio给python编写图形界面
2017/08/21 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
Python实现异步IO的示例
2020/11/05 Python
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
美国玩具公司:U.S.Toy
2018/05/19 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
网上卖盒饭创业计划书范文
2014/02/07 职场文书
安全承诺书格式
2014/05/21 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
费用申请报告范文
2015/05/15 职场文书
小平您好观后感
2015/06/09 职场文书
庆元旦主持词
2015/07/06 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
外出培训学习心得体会
2016/01/18 职场文书
python - timeit 时间模块
2021/04/06 Python
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers