AJAX详解
来源:互联网 发布:淘宝助理要收费 吗 编辑:程序博客网 时间:2024/05/23 00:50
什么是AJAX
Asynchronous Javascript And XML 取四个单词的首字母 AJAX
,读作['eidʒæks]
,汉译为阿贾克斯
。
Asynchronous [ei’siŋkrənəs] adj. 异步的
async [əˈsɪŋk] abbr. 异步
AJAX能做什么
在不刷新整个页面的情况下,与服务器交互(发送与接收数据)。
使用场景
从上面的AJAX能做什么
,应该能得到启发,只要能提高用户体验或方便开发。
XMLHttpRequest对象 - AJAX的核心
XMLHttpRequest对象是AJAX的核心。所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象,老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象。
创建XMLHttpRequest对象
var xmlhttp = null;if (window.XMLHttpRequest) { // for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest();} else { // for IE6, IE5 xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');}
XMLHttpRequest对象的属性、方法与事件
属性
(1) readyState
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
(2) status
200: “OK”
404: 未找到页面
(3 ) responseText
获得字符串形式的响应数据
(4) responseXML
获得 XML 形式的响应数据(是XML文件,不是XML形式的字符串)。
方法
(1) open(method, url, async)
method:请求的类型,取值为’GET’ 或 ‘POST’
url:被请求的服务器文件
async:’true’(异步)或 ‘false’(同步)
(2) send(string)
如果method为’GET’,则参数写在url中,send()方法不能有参数
如果method为’POST’,则参数作为send()的参数
如果async为’true’,则在onreadystatechange事件函数中处理数据
如果async为’false’,则不要编写 onreadystatechange 函数,把代码放到 send() 语句后面即可
// 同步xmlhttp.open('GET', 'a.php', false);xmlhttp.send();document.getElementById('myDiv').innerHTML = xmlhttp.responseText;// 异步xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML = xmlhttp.responseText; }}xmlhttp.open("GET", "test1.txt", true);xmlhttp.send();
事件
(1) onreadystatechange
每当 readyState 属性改变时,就会解发这个事件
GET的问题
(1) GET有缓存现象
解决办法
xmlhttp.open(‘GET’, ‘a.php?t=’ + Math.random(),true);
xmlhttp.send();
(2) GET有数据量限制
(3) GET没有POST安全
POST的注意事项
如果需要像 HTML 表单那样 POST 数据,需要使用 setRequestHeader() 来添加 HTTP 头。
xmlhttp.open('POST', 'a.php', true);xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');xmlhttp.send('name=weiheli&age=26');
setRequestHeader(header,value)
向请求添加 HTTP 头
header: 规定头的名称
value: 规定头的值
JSONP
JSON with Padding 简称 JSONP。
由于同源策略
,js有跨域问题,但HTML的 <script>
标签中的src
却没有这个限制,JSONP正是利用了这一点。
一个示例
HTML页面
<script> function myFn(data) { console.log(data); }</script><script src="003.php?callback=myFn"></script>
003.php
<?php $myFn = $_GET['callback']; $arr = array('name' => 'weiheli', 'age' => 26); echo $myFn . '(' . json_encode($arr) . ')';?>
执行结果
Object {name="weiheli", age=26}
- ajax开发:ajax详解
- ajax 详解
- Ajax详解
- ajax详解
- ajax详解
- Ajax详解
- AJAX 详解
- Ajax详解
- ajax 详解
- AJAX详解
- AJAX详解
- Ajax详解
- AJAX详解
- Ajax详解
- AJAX详解
- ajax详解
- Ajax详解
- AJAX详解
- ExtJS中FormPanel的labelWidth问题
- 从头开始学习算法和数据结构
- SPOJ QTREE2 Query on a tree II (倍增LCA)
- Mysql 多实例配置与启停
- linux编程常用的函数
- AJAX详解
- 基础—机器学习—softMax regression
- Android用Path类绘制路径
- Java面向对象--继承
- Thrift 基础教程(二)编码篇
- 最有效的方法来增加在Map中的值
- 8.3总结
- SQL 左外连接,右外连接,全连接,内连接
- 递归