非常教程

JSON教程

JSON获取

jQuery中使用Ajax获取JSON格式数据示例代码

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSONM文件中包含了关于“名称”和“值”的信息。有时候我们需要读取JSON格式的数据文件,在jQuery中可以使用Ajax或者$.getJSON()方法实现。 

下面就使用jQuery读取music.txt文件中的JSON数据格式信息。 

首先,music.txt中的内容如下: 

代码如下:

[ 
{"optionKey":"1", "optionValue":"Canon in D"}, 
{"optionKey":"2", "optionValue":"Wind Song"}, 
{"optionKey":"3", "optionValue":"Wings"} 
] 

下来是HTML代码:

代码如下:

<div>点击按钮获取JSON数据</div> 
<input type="button" id="button" value="确定" /> 
<div id="result"></div> 

使用Ajax获取JSON数据:

代码如下:

$(document).ready(function(){ 
$('#button').click(function(){ 
$.ajax({ 
type:"GET", 
url:"music.txt", 
dataType:"json", 
success:function(data){ 
var music="<ul>"; 
//i表示在data中的索引位置,n表示包含的信息的对象 
$.each(data,function(i,n){ 
//获取对象中属性为optionsValue的值 
music+="<li>"+n["optionValue"]+"</li>"; 
}); 
music+="</ul>"; 
$('#result').append(music); 
} 
}); 
return false; 
}); 
}); 

当然,也可以使用$.getJSON()方法,代码简洁一点:

代码如下:

$(document).ready(function(){ 
$('#button').click(function(){ 
$.getJSON('music.txt',function(data){ 
var music="<ul>"; 
$.each(data,function(i,n){ 
music+="<li>"+n["optionValue"]+"</li>"; 
}); 
music+="</ul>"; 
$('#result').append(music); 
}); 
return false; 
}); 
}); 

jQuery Ajax异步处理Json数据详解

jquery ajax处理json数据其实与其它ajax处理数据没什么很大的改动,我们只要简单处理一下ajax部份的dataType数据类型等于json即可解决了。

使用 AJAX 请求来获得 JSON 数据,并输出结果:

代码如下:

$("button").click(function(){
  $.getJSON("demo_ajax_json.js",function(result){
    $.each(result, function(i, field){
      $("div").append(field + " ");
    });
  });
});

该函数是简写的 Ajax 函数,等价于:

代码如下:

$.ajax({
  url: url,
  data: data,
  success: callback,
  dataType: json
});

发送到服务器的数据可作为查询字符串附加到 URL 之后。如果 data 参数的值是对象(映射),那么在附加到 URL 之前将转换为字符串,并进行 URL 编码。

传递给 callback 的返回数据,可以是 JavaScript 对象,或以 JSON 结构定义的数组,并使用 $.parseJSON() 方法进行解析。

从 test.js 载入 JSON 数据并显示 JSON 数据中一个 name 字段数据:

代码如下:

$.getJSON("test.js", function(json){
  alert("JSON Data: " + json.users[3].name);
});

一个与asp.net实例

首先给出要传的json数据:{"demoData":"This Is The JSON Data"}

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对象数据,而并非字符串数据,如data0.demoData,这里就直接使用了这个json对象数据

2、使用webservice(asmx)来处理

这种处理方式就不会将传递过来的数据当成是json对象数据,而是作为字符串来处理的,

代码如下:

$.ajax({     
type: "post",     
url: "JqueryCSMethodForm.asmx/GetDemoData",     
dataType: "json",/*这句可用可不用,没有影响*/
contentType: "application/json; charset=utf-8",     
success: function (data) {     
$("input#showTime").val(eval('(' + data.d + ')')[0].demoData);
//这里有两种对数据的转换方式,两处理方式的效果一样//$("input#showTime").val(eval(data.d)[0].demoData);
},     
error: function (XMLHttpRequest, textStatus, errorThrown) {     
alert(errorThrown);     
}     
});

下面为asmx的方法代码

代码如下:

[WebMethod]     
public static string GetDemoData() {     
return "[{"demoData":"This Is The JSON Data"}]";     
}

这里的这种处理方式就把传递回来的json数据当成了字符串来处理的,所在就要对这个数据进行eval的处理,这样才能成为真正的json对象数据,

我们先来看一下html模板: 

代码如下:

<table id="datas" border="1" cellspacing="0" style="border-collapse: collapse">
    <tr>
        <th>订单ID</th>
        <th>客户ID</th>
        <th>雇员ID</th>
        <th>订购日期</th>
        <th>发货日期</th>
        <th>货主名称</th>
        <th>货主地址</th>
        <th>货主城市</th>
        <th>更多信息</th>
   </tr>
   <tr id="template">
       <td id="OrderID"></td>
       <td id="CustomerID"></td>
       <td id="EmployeeID"></td>
       <td id="OrderDate"></td>
       <td id="ShippedDate"></td>
       <td id="ShippedName"></td>
       <td id="ShippedAddress"></td>
       <td id="ShippedCity"></td>
       <td id="more"></td>
   </tr>
</table>

 一定要注意的就是里面所有的id属性,这个是一个关键。再来看一下AJAX请求和绑定数据的代码

代码如下:

$.ajax({
            type: "get",//使用get方法访问后台
            dataType: "json",//返回json格式的数据
            url: "BackHandler.ashx",//要访问的后台地址
            data: "pageIndex=" + pageIndex,//要发送的数据
            complete :function(){$("#load").hide();},//AJAX请求完成时隐藏loading提示
            success: function(msg){//msg为返回的数据,在这里做数据绑定
                var data = msg.table;
                $.each(data, function(i, n){
                    var row = $("#template").clone();
                    row.find("#OrderID").text(n.订单ID);
                    row.find("#CustomerID").text(n.客户ID);
                    row.find("#EmployeeID").text(n.雇员ID);
                    row.find("#OrderDate").text(ChangeDate(n.订购日期));
                    if(n.发货日期!== undefined) row.find("#ShippedDate").text(ChangeDate(n.发货日期));
                    row.find("#ShippedName").text(n.货主名称);
                    row.find("#ShippedAddress").text(n.货主地址);
                    row.find("#ShippedCity").text(n.货主城市);
                    row.find("#more").html("<a href=OrderInfo.aspx?id=" + n.订单ID + "&pageindex="+pageIndex+"> More</a>");                    
                    row.attr("id","ready");//改变绑定好数据的行的id
                    row.appendTo("#datas");//添加到模板的容器中
                });

这个是jQuery的AJAX方法,返回数据并不复杂,主要说明一下怎么把数据按模板的定义显示到到页面上。首先是这个“var row = $("#template").clone();”先把模板复制一份,接下来row.find("#OrderID").text(n.订单ID);,表示找到id=OrderID的标记,设置它的innerText为相应的数据,当然也可以设置为html格式的数据。或者是通过外部的函数把数据转换成需要的格式,比如这里row.find("#OrderDate").text(ChangeDate(n.订购日期));有点服务器控件做模板绑定数据的感觉。

所有的这些,都是放在一个静态的页面里,只通过AJAX方法从后台获取数据,所有html代码如下:

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>test1</title>
    <script language="javascript" type="text/javascript" src="js/jquery-latest.pack.js"></script>
    <script language="javascript" type="text/javascript" src="js/PageDate.js"></script>
</head>
<body>
    <div>
         <div>
            <br />
            <input id="first" type="button" value="  <<  " /><input id="previous" type="button"
                value="  <  " /><input id="next" type="button" value="  >  " /><input id="last" type="button"
                    value="  >>  " />
             <span id="pageinfo"></span>
            <table id="datas" border="1" cellspacing="0" style="border-collapse: collapse">
                <tr>
                    <th>
                        订单ID</th>
                    <th>
                        客户ID</th>
                    <th>
                        雇员ID</th>
                    <th>
                        订购日期</th>
                    <th>
                        发货日期</th>
                    <th>
                        货主名称</th>
                    <th>
                        货主地址</th>
                    <th>
                        货主城市</th>
                    <th>
                        更多信息</th>
                </tr>
                <tr id="template">
                    <td id="OrderID">
                    </td>
                    <td id="CustomerID">
                    </td>
                    <td id="EmployeeID">
                    </td>
                    <td id="OrderDate">
                    </td>
                    <td id="ShippedDate">
                    </td>
                    <td id="ShippedName">
                    </td>
                    <td id="ShippedAddress">
                    </td>
                    <td id="ShippedCity">
                    </td>
                    <td id="more">
                    </td>
                </tr>
            </table>
        </div>
        <div id="load" style="left: 0px; position: absolute; top: 0px; background-color: red">
            LOADING....
        </div>
        <input type="hidden" id="pagecount" />
    </div>
</body>
</html>

PageData.js就是包括上面AJAX请求和绑定数据代码的js,整个页面连form都不用,这样做有什么好处呢。再看下面一个模板

代码如下:        

<ul id="datas">
    <li id="template">
        <span id="OrderID">
            fsdfasdf
        </span>
        <span id="CustomerID">
        </span>
        <span id="EmployeeID">
        </span>
        <span id="OrderDate">
        </span>
        <span id="ShippedDate">
        </span>
        <span id="ShippedName">
        </span>
        <span id="ShippedAddress">
        </span>
        <span id="ShippedCity">
        </span>
        <span id="more">
        </span>
    </li>
</ul> 

还是要注意id属性。大家看到这里应该明白了,不管用什么样的表现形式,只要id属性相同,就可以把数据绑定到对应的位置。这样的话,我们这些做程序的就不会因为美工的修改而修改代码了,而且美工也只要做出html就可以了,不需要为服务器控件做模板。

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等),易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。从Web API和服务端编程语言到NoSQL数据库和客户端框架,都有JSON的身影,在不同平台间传递数据方面,JSON已成为XML强有力的替代者。

主页 http://www.json.org/json-zh.htmljson
源码 https://github.com/topics/json

JSON目录

1. JSON教程
2.JSON 教程
3.JSON 基础
4.json格式
5.JSON 示例
6.JSON解析
7.JSON遍历
8.JSON调用
9.JSON转换
10.JSON获取
11.JSON字符串
12.JSON数组
13.JavaScript 教程
14.JSON 教程
15.JavaScript 注释
16.JavaScript 语句
17.JavaScript 输出
18.JavaScript 用法
19.JavaScript 简介
20.JavaScript switch 语句
21.JavaScript If…Else 语句
22.JavaScript 比较和逻辑运算符
23.JavaScript 运算符
24.JavaScript 函数
25.JavaScript 对象
26.JavaScript 数据类型
27.JavaScript 变量
28.JavaScript for 循环
29.JavaScript HTML DOM 事件
30.JavaScript HTML DOM 改变 CSS
31.JavaScript HTML DOM 改变 HTML 内容
32.JavaScript HTML DOM
33.JavaScript 表单验证
34.JavaScript 错误 – Throw、Try 和 Catch
35.JavaScript break 和 continue 语句
36.JavaScript while 循环
37.JavaScript HTML DOM 元素 (节点)
38.JavaScript Number 对象
39.JavaScript 对象
40.JavaScript Date(日期)对象
41.JavaScript 字符串(String)对象
42.JavaScript Window History
43.JavaScript Window Location
44.JavaScript Window Screen
45.JavaScript Window
46.JavaScript RegExp 对象
47.JavaScript Math(算数)对象
48.JavaScript Boolean(布尔)对象
49.JavaScript Array(数组)对象
50.JavaScript 实例
51.JavaScript 测试 Prototype
52.JavaScript 测试 jQuery
53.JavaScript 库
54.JavaScript Cookie
55.JavaScript 计时事件
56.JavaScript 弹窗
57.JavaScript Window Navigator
58.JavaScript HTML DOM 实例
59.JavaScript 对象实例
60.JavaScript 总结
61.JavaScript 浏览器对象实例
62.JSON 语法
63.JSON 使用
64.JSON 简介
65.JavaScript 保留关键字
66.JavaScript 字符串
67.JavaScript 事件
68.JavaScript 作用域
69.JavaScript JSON
70.JavaScript HTML DOM EventListener
71.JSONP 教程
72.javascript:void(0) 含义
73.JavaScript 语法
74.JavaScript 调试
75.JavaScript 闭包
76.JavaScript 函数调用
77.JavaScript 函数参数
78.JavaScript 函数定义
79.JavaScript 类型转换
80.JavaScript typeof, null, 和 undefined
81.JavaScript 正则表达式
82.JavaScript JSON.stringify()
83.JavaScript JSON.parse()
84.JavaScript 代码规范
85.JavaScript 使用误区
86.JavaScript 严格模式(use strict)
87.JavaScript 变量提升
88.JavaScript 验证 API
89.JavaScript 表单
90.JSON.stringify()
91.JSON.parse()
92.JSON 数组
93.JSON 对象
94.JavaScript HTML DOM 节点列表
95.JavaScript HTML DOM 集合(Collection)
96.JavaScript let 和 const
97.JavaScript this 关键字
98.JavaScript prototype(原型对象)
99.JSON vs XML
100.JavaScript Promise