1.AJAX
    [1] AJAX简介
        > 全称:Asynchronous JavaScript And XML
        > 直译:异步的JavaScript和XML
        > AJAX就是通过JS向服务器发送请求,接收响应,并通过DOM来修改网页。
        > XML是服务器返回的数据的格式,但是现在xml格式的数据使用的不多了
 
    [2] 同步和异步
        - 同步请求:
            - 通过浏览器向服务器发送请求时,整个的页面都处在一个等待的状态,不能做其他操作,
                等待服务器的响应到达浏览器时,它会刷新整个网页。
 
        - 异步请求:
            - 发送请求时,通过js在后台自动发送的,不会影响用户浏览操作网页的行为,
                当响应返回时,只会刷新网页中的一部分,而不是整个网页。
 
    [3] XMLHttpRequest对象
        > JS中为我们提供了一个XMLHttpRequest对象,它封装了浏览器发送给服务器的请求报文,
            同时我们也可以使用该对象来接收服务器发送的响应信息。
        > 我JS中AJAX操作都是围绕着XMLHttpRequest进行的。
 
    [4] 使用步骤
        1.创建XMLHttpRequest对象
            >  大部分浏览器都支持的方式
                var xhr = new XMLHttpRequest();
            > IE6以下的浏览器
                var xhr = new ActiveXObject("Msxml2.XMLHTTP");
            > IE5.5以下的浏览器   
                var xhr = new ActiveXObject("Microsoft.XMLHTTP");
            >
            //获取XMLHttpRequest对象的方法
            function getXMLHttpRequest(){
                try{
                    //大部分浏览器都支持的方式
                    return new XMLHttpRequest();
                }catch(e){
                    try{
                        //IE6以下浏览器支持的方式
                        return new ActiveXObject("Msxml2.XMLHTTP");
                    }catch(e){
                        try{
                            //IE5.5以下支持的方式
                            return new ActiveXObject("Microsoft.XMLHTTP");
                        }catch(e){
                            alert("哥们,你是外星来的吧!你的浏览器不支持AJAX");
                        }
                    }
                }
            }           
 
        2.设置请求信息
            xhr.open("请求方式","请求地址");
 
        注意:在发送post请求时,还需要设置一个请求头:
            xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
 
        3.发送请求
            xhr.send(请求体);
 
        4.接收响应信息
            xhr.onreadystatechange = function(){
                //判断readyState是否为4,status是否为200
                if(xhr.reqdyState==4 && xhr.status==200){
 
                    //获取响应信息
                    var text = xhr.responseText;
                    var dom = xhr.responseXML;
                }
 
            };
 
    [5] 响应数据的格式
        > 最早的时候我们的AJAX一直使用XML作为响应数据的格式。
        > 当我们需要向请求返回一个复杂的数据,比如说一个学生对象。
            name=老王,age=18,gender=男,address=隔壁
        > 一般复杂数据我们可以考虑使用XML来表示
            <person>
                <name>老王</name>
                <age>18</age>
                <gender>男</gender>
                <address>隔壁</address>
            </person>
        > 使用XML去传输数据,XML的传输性能略差,解析起来比较麻烦
            所以现在在AJAX的开发中已经很少使用XML作为响应数据的格式。
 
        > 当我们发送复杂数据时,一般我们会采用JSON。比如同样的数据,使用json可以这样表示:
            {"name":"老王","age":18,"gender":"男","address":"隔壁"}
 
2.JSON
    [1] JSON简介
        > JSON全称 JavaScript Object Notation
        > JSON和XML类似,都是一种表示数据的格式
        > JSON和XML相比,占用的空间小,传输性能好
            解析起来也是十分方便。
        > JSON实际上就是一个字符串,但是这个字符串可以转换为对象。
        > 使用JSON比XML性能要高很多。
        > JSON传输性能好,可读性比较差
            XML传输性能不好,可读性好
        > 所以我们一般使用JSON传输信息,而使用XML来编写配置文件。   
 
    [2] JSON的格式
        > JSON的语法:
            - JSON对象
                {
                    "属性名1":属性值1,
                    "属性名2":属性值2,
                    "属性名3":属性值3
                }
            - JSON对象中保存的是一组一组的键值对结构,
                属性名和属性值使用冒号连接,
                属性名必须加上双引号,
                多个键值对之间使用,隔开
                如果属性后边没有其他属性,千万不要再加,!
 
            - JSON数组
                [属性1,属性2,属性3]
 
        > JSON属性值可以使用的类型:
            1.字符串
            2.数字
            3.布尔
            4.null
            5.对象
            6.数组
    [3] JSON的转换
        1.在JS中JSON的转换:
            1) json字符串 --> js对象
                var obj = JSON.parse(json);
            2) js对象 ---> json字符串
                var json = JSON.stringify(obj);
 
        2.在Java中JSON的转换:
            1) json-lib 使用麻烦,性能差
            2) jackson 使用简单,性能最好
            3) gson 使用最简单,性能好
                - gson是谷歌出品的一款JSON的解析工具。
                - 使用gson,需要先导入一个jar包:
                    gson-2.2.4.jar
                - 使用:
                    Gson gson = new Gson();
                - 方法:
                    String json = gson.toJson(对象);
                    Object obj = gson.fromJson(JSON字符串,对象类型);
 
 
 
3.通过jQuery实现AJAX
 
    [1] post()方法   
        > post(url, [data], [callback], [type])
            - url:发送请求的地址   
            - data:请求参数,需要一个js对象
            - callback:回调函数,当响应返回时,该回调函数会执行,
                并且将响应内容以参数的形式返回
            - type:指定响应内容的类型,xml, html, script, json, text   
 
    [2] get()方法
        > get(url, [data], [callback], [type])
            - url:发送请求的地址   
            - data:请求参数,需要一个js对象
            - callback:回调函数,当响应返回时,该回调函数会执行,
                并且将响应内容以参数的形式返回
            - type:指定响应内容的类型,xml, html, script, json, text   
 
    [3] getJSON()方法
        > getJSON作用和get类似,只不过他的type默认就是json,不用再指定了。
 

转载请注明出处!

http://www.cnblogs.com/libingbin/

感谢您的阅读。如果文章对您有用,那么请轻轻点个赞,以资鼓励。

让我们喝喝下午茶,聊聊AJAX和JSON的更多相关文章

  1. 记一次在.NET成长之路上的下午茶

    在2017年2月25日我和李海国有幸与阳铭.朱永光两位大哥喝了一次下午茶.熟悉ABP框架的朋友呢知道阳铭远在上海,所以个人很是珍惜这次机会.朱永光大哥是微软MVP,之前是启路科技的CTO,目前在微软. ...

  2. 瑞幸咖啡还是星巴克,一杯下午茶让我明白 设计模式--模板方法模式(Template Method Pattern)

    简介 Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template M ...

  3. 新蒂下午茶体基本版SentyTEA-Basic

    一.目前的最新版新蒂下午茶体包含了7600+常用汉字,每个字都是手写而成,是一套充满手写感的中文字体,轻松.惬意,如同慢饮一杯下午茶.SentyTEA-Basic.ttf  这个一个新蒂下午茶体基本版 ...

  4. CTO俱乐部下午茶:技术团队管理中的那些事儿

    摘要:"CTO下午茶"是一种有效的集体对话的模式,参加活动的成员在真诚互动和共同学习的宗旨下齐聚一堂,在喝茶聊天氛围下交流工作心得.本期"CTO下午茶"的主题是 ...

  5. 6月27日CTO俱乐部下午茶印象

    作者:朱金灿 来源:http://blog.csdn.net/clever101 感谢CSDN的邀请,有幸参加了6月27日“CTO俱乐部下午茶时光:CTO在团队管理中所遇到的那些事”活动.本期的主讲嘉 ...

  6. HTTP协议(下午茶)

    http://www.kancloud.cn/kancloud/tealeaf-http/43840   下午茶

  7. 【java下午茶】12306的双人票

    明天下午就要和客户谈需求了,今天还在列车上假象着明天的情景,由于这是一个旅游的项目,所以想尽可能设计得人性化一些. 不过有件很不爽的事情就是和老公的位子是分开的,虽然我们订的是连坐号.就这个问题也是我 ...

  8. 【java下午茶系列】java三重奏之封装

      java中的封装.继承.多态可谓是踏入这一行业的必经之槛,诸多新人在不明就里的情况下将其各种概念背的是滚瓜烂熟.即便是工作多年之后,也不见得能说出个所以然,或许冥冥之中已经写过无数封装的代码,只是 ...

  9. 洛谷 P2978 [USACO10JAN]下午茶时间Tea Time

    P2978 [USACO10JAN]下午茶时间Tea Time 题目描述 N (1 <= N <= 1000) cows, conveniently numbered 1..N all a ...

随机推荐

  1. 交换排序---快速排序算法(Javascript版)

    快速排序是对冒泡排序的一种改进.通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行 ...

  2. C#各种文件操作的代码与注释

    C#各种文件操作的代码与注释,具体看下面代码: using System; using System.Collections.Generic; using System.Linq; using Sys ...

  3. iOS 阶段学习第22天笔记(JSON数据格式介绍)

    iOS学习(OC语言)知识点整理 一.JSON数据格式 1)概念:json是一种网络数据传输格式,有值/对象:{“A”:1,”B”:”2”…}词典:对象的序列:[,,,,,]数组两种数据类型 2)UR ...

  4. 基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.调用API过程中参数的传递是必须的,本节就来谈谈 ...

  5. 背水一战 Windows 10 (4) - UI: 多窗口

    [源码下载] 背水一战 Windows 10 (4) - UI: 多窗口 作者:webabcd 介绍背水一战 Windows 10 之 UI 多窗口 示例1.自定义帮助类,用于简化 Secondary ...

  6. redis主从 以及认证配置

    以前用redis用的很多,各种数据类型用的飞起,算是用得很溜了.不过那都是封装好的方法,自己直接调用.以前的公司比较规范,开发只是开发,很少去做跟运维相关的事情. 换了一份工作,不过这边项目刚开始起步 ...

  7. [小北De编程手记] : Lesson 05 玩转 xUnit.Net 之 从Assert谈UT框架实践

    这一篇,本文会介绍一下基本的断言概念,但重点会放在企业级单元测试的相关功能上面.下面来跟大家分享一下xUnit.Net的断言,主要涉及到以下内容: 关于断言的概念 xUnit.Net常用的断言 关于单 ...

  8. nodejs中全局变量

    1.global 类似于客户端javascript运行环境中的window module1.js: module.exports={}; //耻辱的使用了全局变量 global.varA = &quo ...

  9. Sharepoint2013:日期控件报错

    1 问题 1> 在sharepoint中的,日期控件(DateTimeControl),日期过滤控件(Date Filter)和SPListViewFilter等包含日期组件的控件,在特定情况下 ...

  10. Skytte:一款令人印象深刻的 HTML5 射击游戏

    Skytte 是一款浏览器里的 2D 射击游戏.使用 Canvas 元素和大量的 JavaScript 代码实现.Skytte 是用我们的开源和现代的前端技术创造的.经典,快节奏的横向滚动射击游戏,探 ...