首页 > 代码库 > 第一百七十三节,jQuery,Ajax

第一百七十三节,jQuery,Ajax

jQuery,Ajax

 

学习要点:

  1.Ajax 概述

  2.load()方法

  3.$.get()和$.post()

  4.$.getScript()和$.getJSON()

  5.$.ajax()方法

  6.表单序列化

 

Ajax 全称为:“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML), 它并不是 JavaScript 的一种单一技术,而是利用了一系列交互式网页应用相关的技术所形 成的结合体。使用 Ajax,我们可以无刷新状态更新页面,并且实现异步提交,提升了用户 体验。

 

一.Ajax 概述

Ajax 这个概念是由 Jesse James Garrett 在 2005 年发明的。它本身不是单一技术,是一串 技术的集合,主要有:

  1.JavaScript,通过用户或其他与浏览器相关事件捕获交互行为;

  2.XMLHttpRequest 对象,通过这个对象可以在不中断其它浏览器任务的情况下向服务 器发送请求;

  3.服务器上的文件,以 XML、HTML 或 JSON 格式保存文本数据;

  4.其它 JavaScript,解释来自服务器的数据(比如 PHP 从 MySQL 获取的数据)并将其 呈现到页面上。

由于 Ajax 包含众多特性,优势与不足也非常明显。优势主要以下几点:

  1.不需要插件支持(一般浏览器且默认开启 JavaScript 即可);

  2.用户体验极佳(不刷新页面即可获取可更新的数据);

  3.提升 Web 程序的性能(在传递数据方面做到按需放松,不必整体提交);

  4.减轻服务器和带宽的负担(将服务器的一些操作转移到客户端);

而 Ajax 的不足由以下几点:

  1.不同版本的浏览器度 XMLHttpRequest 对象支持度不足(比如 IE5 之前);

  2.前进、后退的功能被破坏(因为 Ajax 永远在当前页,不会几率前后页面);

  3.搜索引擎的支持度不够(因为搜索引擎爬虫还不能理解 JS 引起变化数据的内容);

  4.开发调试工具缺乏(相对于其他语言的工具集来说,JS 或 Ajax 调试开发少的可怜)。

异步和同步

使用 Ajax 最关键的地方,就是实现异步请求、接受响应及执行回调。那么异步与同步 有什么区别呢?我们普通的 Web 程序开发基本都是同步的,意为执行一段程序才能执行下 一段,类似电话中的通话,一个电话接完才能接听下个电话;而异步可以同时执行多条任务, 感觉有多条线路,类似于短信,不会因为看一条短信而停止接受另一条短信。Ajax 也可以 使用同步模式执行,但同步的模式属于阻塞模式,这样会导致多条线路执行时又必须一条一 条执行,会让 Web 页面出现假死状态,所以,一般 Ajax 大部分采用异步模式。

 

二.load()方法

jQuery 对 Ajax 做了大量的封装,我们使用起来也较为方便,不需要去考虑浏览器兼容 性。对于封装的方式,jQuery 采用了三层封装:最底层的封装方法为:$.ajax(),而通过这 层封装了第二层有三种方法:.load()、$.get()和$.post(),最高层是$.getScript()和$.getJSON() 方法。

 

load()方法可以参数三个参数:url(必须,请求 html 文件的 url 地址,参数类型为 String)、 data(可选,发送的 key/value 数据,参数类型为 Object)、callback(可选,成功或失败的回调 函数,参数类型为函数 Function)。

 

load()方法获取一个外部文件数据写入一个div

外部文件new.html

<span>玉秀文化传播</span>
<span>www.jxiou.com</span>

本页html

<input type="button" value="异步获取数据" />
<div id="box"></div>

jQuery获取

    $(‘input‘).click(function () {
        $(‘#box‘).load(‘new.html‘);  //获取new.html的数据写入#box元素
    });

获取后的本页代码

<input value="异步获取数据" type="button">
<div id="box">
    <span>玉秀文化传播</span>
    <span>www.jxiou.com</span>
</div>

 

load()方法获取一个外部文件数据筛选出指定数据写入一个div

 

第一百七十三节,jQuery,Ajax