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 相关文章推荐
jquery offset函数应用实例
Nov 14 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
原生JavaScript生成GUID的实现示例
Sep 05 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
Jul 08 Javascript
javascript数组随机排序实例分析
Jul 22 Javascript
原生JS实现图片翻书效果
Feb 16 Javascript
js仿网易表单及时验证功能
Mar 07 Javascript
详解node-ccap模块生成captcha验证码
Jul 01 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
js事件on动态绑定数据,绑定多个事件的方法
Sep 15 Javascript
JS实现点餐自动选择框(案例分析)
Dec 10 Javascript
JS Thunk 函数的含义和用法实例总结
Apr 08 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
Vue使用mixins实现压缩图片代码
2018/03/14 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
python文字转语音的实例代码分析
2019/11/12 Python
python中的itertools的使用详解
2020/01/13 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
九年级科学教学反思
2014/01/29 职场文书
授权收款委托书范本
2014/10/10 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015党建工作简报
2015/07/21 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
Docker安装MySql8并远程访问的实现
2022/07/07 Servers