ajax入门学习
1. XMLHttpRequest 是 AJAX 的基础。
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新
创建 XMLHttpRequest 对象的语法
var variable=new XMLHttpRequest();
有时候为了保证程序的可靠性,我们还需要考虑浏览器是否支持XMLHttpRequest。此时就需要编写一段代码进行兼容;
代码块部分:
var xmlhttp;
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
} else {
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
2.AJAX - 向服务器发送请求请求
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
open("GET","url",true);
send();
open(method,url,async) |
规定请求的类型、URL 以及是否异步处理请求。
|
send(string) |
将请求发送到服务器。
|
GET 还是 POST?
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
get 方法主要是用于获取url?后面的地址所携带的信息,比post更节省性能,速度更快;
但是post更安全,在以下情况中,必须使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
get实例:
post实例:
通常情况下我们使用异步,这样程序执行起来更加方便,因为通过 AJAX,JavaScript 无需等待服务器的响应,而是:
在等待服务器响应时执行其他脚本
当响应就绪后对响应进行处理
异步时
就是当使用 async=true 时,在响应 onreadystatechange 事件中的就绪状态时执行的函数:
xmlhttp.readystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","/try/ajax/ajax_info.txt",true);
xmlhttp.send();
同步时:JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。
也就是async=false,即 open() 方法中的第三个参数改为 false
注意:当您使用 async=false 时,请不要编写 readystatechange 函数 - 把代码放到 send() 语句后面即可:
xmlhttp.open("GET","/try/ajax/ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
3.AJAX - 服务器 响应
获得来自服务器的响应,使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
属性 | 描述 |
---|---|
responseText | 如果来自服务器的响应并非 XML,使用 responseText 属性。获得字符串形式的响应数据。 |
responseXML | 如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,使用 responseXML 属性:获得 XML 形式的响应数据。 |
onreadystatechange 事件
当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState 属性存有 XMLHttpRequest 的状态信息。
下面是 XMLHttpRequest 对象的三个重要的属性:
属性 | 描述 |
---|---|
onreadystatechange | 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。 |
readyState |
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
|
status | 200: "OK" 404: 未找到页面 |
在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
当 readyState 等于 4 且状态为 200 时,表示响应已就绪:
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
//将获取的数据发送给前端盒子
}
}
注意: onreadystatechange 事件被触发 4 次(0 - 4), 分别是: 0-1、1-2、2-3、3-4,对应着 readyState 的每个变化。
使用回调函数
回调函数是一种以参数形式传递给另一个函数的函数。
如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。
该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):
function myFunction() {
loadXMLDoc("/try/ajax/ajax_info.txt",function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
} });
}
最新文章
- 高性能 TCP &; UDP 通信框架 HP-Socket v3.5.1
- ios数据永久存储之----NSUserDefaults
- 是uibutton跟tableviewcell同步使用一个bug
- linux安装SVN
- c++各种排序
- JavaScript学习笔记(8)——JavaScript语法之运算符
- 如何将Icon转成Bitmap(对ICON的内部格式讲的比较清楚)
- C中内存分配方式[转载]
- Let's Encrypt: 为CentOS/RHEL 7下的nginx安装https支持-具体案例
- Oracle Service Bus 11g 的三种方案
- Shell bash 数学运算 bc
- CentOS7安装详解
- ftruncate(改变文件大小)
- 【开机自启】Linux下设置MySql自动启动
- Python 函数的嵌套
- 百度前端技术学院task35源代码——听指令的小方块3
- ubuntu 13.04 编译 安装 升级 gcc 4.9.0 address sanitizer
- Druid.io系列(一):简介
- redis之(十二)redis数据的持久化
- git 提交 src refspec master does not match any