AJAX:Asynchronous JS And XML,包括HTML、CSS、JS、DOM、XML、JSON等,客户端技术范畴。主要目标:发起异步请求/响应,实现页面内容的局部刷新,提高浏览体验;实现动态页面的静态化。

使用AJAX的步骤:

(1)创建XHR对象——XMLDOM对象

(2)绑定onreadystatechange事件监听函数

(3)创建请求消息

(4)发送请求消息

AJAX的原理图:

使用AJAX发起GET请求:

(1)

(2)

(3) xhr.open('GET', 'xx.php?k=v&k=v', true)

(4) xhr.send( null )

使用AJAX发起POST请求:

(1)

(2)

(3) xhr.open('POST', 'xx.php', true)

(3.5) xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

(4) xhr.send( 'k=v&k=v&k=v' )

常见的MIME(Multipurpose Internet Mail Extension):

.jpeg .jpg <= image/jpeg

.html .htm <= text/html

.mpeg3 .mp3 <= audio/mpeg3

MIME类型,就是用于唯一的标示一种特定格式的文件的一个描述符

常见的MIME类型:

image/jpeg image/gif image/png

text/plain text/html text/css

application/javascript application/xml application/json

application/msword ....

1.使用AJAX接收服务器返回的text响应

示例:点击酒馆,获得英雄列表

服务器端:

header('Content-Type: text/plain');

客户端:

(1)(2) console.log(xhr.responseText);

(3)(4)

2.使用AJAX接收服务器返回的html响应——重点

示例:动态数据的级联下拉列表

服务器端:

header('Content-Type', 'text/html');

客户端:

(1)(2) document.getElementXxxx().innerHTML = xhr.responseText;

(3)(4)

3.使用AJAX接收服务器返回的script响应

示例:加载不同的JS,实现页面主题的定制

服务器端:

header('Content-Type', 'application/javascript')

客户端:

(1)

(2) typeof( xhr.responseText ); //string

eval( xhr.responseText ); //把string作为js来执行

(3)

(4)

服务器如何异步的向客户端返回批量有结构的数据?如多个商品、多条帖子....

text/plain(无格式):'tom9070mary105john120'

text/plain(有格式):'tom#90#70@mary#10#5@john#1#20'

text/html(有格式):

'<div><p>tom<p><p>90</p><p>70</p></div><div><p>mary<p><p>90</p><p>70</p></div>'

批量响应数据最好的形式:有数据、有格式、跟HTML标签无关系、编程语言易于处理

application/xml:

application/json:

4.使用AJAX接收服务器返回的xml响应

HTML:HyperText Markup Language,所有的HTML标签已经为了在浏览器中加以而固定下来。用标签来呈现网页内容。

XML:eXtensible Markup Language,可扩展的标签语言,用标签的形式来描述数据(财务、航天、化学、无线...),没有预定义任何的标签,所有的标签都由使用者随意指定。XML语言标准规定了XML数据的格式必须满足:

(1)双标签有开始,就必须有结束;单标记标签必须有/

(2)标签名严格区分大小写

(3)属性值必须使用引号括起来

(4)...

W3C DOM分为三部分:

(1)核心DOM:用于处理任意的ML文档

document childNodes firstChild lastChild parentNode

nextSibling previousSibling

document.getElementXxxx

node.getAttribute() node.setAttribute()

(2)HTML DOM:用于HTML文档

(3)XML DOM:用于处理XML文档

XMLHttpRequest DOMParser - 可以把一段XML字符串解析为一棵DOM树

示例:异步的加载新闻列表

5.使用AJAX接收服务器返回的json响应——重点

JSON:原本是JS中创建的对象的“直接量”法,后来从JS中独立出来,作为一种字符串数据的表示法,被各种语言所支持。其作用于XML类似,但比XML更加轻量级、简洁、处理速度更快。

JSON格式表示字符串,有两种格式:

JSON对象字符串格式:'{ "k1":"v1", "k2": v2 }'

JSON数组字符串格式:'[ v1, v2, v3... ]'

示例:异步的加载新闻列表

服务器端:

header('Content-Type: application/json');

$arr = [ ];

echo json_encode( $arr ); //PHP数组=>JSON字符串

客户端:

(1)

(2) var jsObj =       JSON.parse( xhr.responseText ); //把JSON字符串解析为JS数组/对象

(3)

(4)

服务器端(PHP数据) => JSON字符串 => 客户端(JS对象)

悦为(深圳)科技有限公司

乐享其志

微信:JoyVisYOJOY

微博:http://weibo.com/JoyVis

官网:http://www.yuevis.com/

联系&投稿:service@joyvis.com

异步请求Ajax的更多相关文章

  1. [js开源组件开发]network异步请求ajax的扩展

    network异步请求ajax的扩展 在日常的应用中,你可能直接调用$.ajax是会有些问题的,比如说用户的重复点击,比如说我只希望它成功提交一次后就不能再提交,比如说我希望有个正在提交的loadin ...

  2. 异步请求Ajax(取得json数据)

    异步请求Ajax 没有学习Ajax之前请求数据的时候都是整个页面全部刷新了一次,也就是每次请求都会重新请求所有的资源.但是在很多时候不需要页面全部刷新,仅仅是需要页面的局部数据刷新即可,此时需要发送异 ...

  3. JavaScrpit中异步请求Ajax实现

    在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面. 一般来说,使用Jquery中的$.ajax,$.post,$.getJSON,非常方便,但是有的时候,我们只因为需 ...

  4. 关于异步请求AJAX的具体解释

    1,异步请求的方法步骤: 1,推断当前用户支持的浏览器类型 XMLHttpRequest:推断是否支持非IE浏览器,相应的创建方法:xmlhttp = new XMLHttpRequest(); wi ...

  5. [异步请求]ajax、axios、fetch之间的详细区别以及优缺点

    1.jQuery ajax  $.ajax({ type: 'POST', url: url, data: data, dataType: dataType, success: function () ...

  6. jQuery异步请求ajax()之complete参数详解

    请求完成后回调函数 (请求success 和 error之后均调用).这个回调函数得到2个参数:XMLHTTPRequest) 对象和一个描述请求状态的字符串("success", ...

  7. 异步请求 ajax的使用详解

    https://blog.csdn.net/happyaliceyu/article/details/52381446 可以说是很详细了,赞

  8. 黑马学习AJAX jQuery发送异步请求 $.ajax() $.post() $.get()是在调用方法而不是定义方法

  9. ajax异步请求302分析

    1.前言 遇到这样一种情况,打开网页两个窗口a,b(都是已经登录授权的),在a页面中退出登录,然后在b页面执行增删改查,这个时候因为授权原因,b页面后端的请求肯定出现异常(对这个异常的处理,进行内部跳 ...

随机推荐

  1. centos环境自动化批量安装软件脚本

    自动化安装jdk软件部署脚本 准备工作: 1.在执行脚本的服务器上生成免密码公钥: 安装expect命令 yum install -y expect ssh-keygen 三次回车 2.将jdk-7u ...

  2. Codeigniter

    最近准备接手改进一个别人用Codeigniter写的项目,虽然之前也有用过CI,但是是完全按着自己的意思写的,没按CI的一些套路.用在公众的项目,最好还是按框架规范来,所以还是总结一下,免得以后别人再 ...

  3. kendoWindow 与 bootbox 冲突,显示层次问题

    今天在使用bootbox做弹出提示遇到些麻烦,由于使用kendoWindow先弹出数据输入窗口, 然后在检核输入时,又用bootbox做为提示窗口,这下悲剧了,后弹出的bootbox窗口总是在kend ...

  4. cef3 获得js 返回值, 以及js 指挥delphi 函数的 总结参考

     cef3  如何加载 本地html 文件.   请教老师[吐槽]常忘<run_fan@qq.com>  22:21:45@lazarus 下载cef3中的范例中就有  [吐槽]常忘< ...

  5. fedora25 下配置samba

    本例是在 / 目录下建立share 文件夹为例 Sudo dnf install samba samba-common samba-clientsudo mkdir /share sudo chmod ...

  6. angularjs(一)基础概念

    一.前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,作为一名业界新秀,紧跟时代潮流,学习掌握新知识自然是不敢怠慢.当听到AngularJs这个名字并知道是google在维 ...

  7. 初学c# -- 学习笔记(二)

    接着前面的学习,对话建立了,下面就写对话框气泡,和微信的差不多那种.尖角对话气泡网上一堆,圆尖角的修改了一个.IE8以下不能用,其他都可以用,直接上html代码,将<style>内容用到你 ...

  8. Node.js intro

    1. require() load module http://stackoverflow.com/questions/9901082/what-is-this-javascript-require ...

  9. REMOVE ONCLICK DELAY ON WEBKIT FOR IPHONE

    Developing on the webkit for iPhone I encountered a curious delay ononClick events. It seems that th ...

  10. Versioned table in Netezza

    Problem One QC process need to obtain tables and their row counts in a database in Netezza. We use t ...