AJAX是什么?怎么在JavaScript中使用?
javascript能流行,一个很重要的原因是ajax技术的应用。在网页中有很多的应用。举两个常见的ajax应用的例子:
1、 在搜索中,我们输入关键字时,网页会实时展现搜索结果;这是用ajax实现的。
2、 使用地图时,地图会根据用户显示的位置不停的更新。这也是通过ajax实现。
那么什么是ajax呢?
ajax全称为asynchronous javascript and xml直译就是异步的javascript和xml(这里我们主要介绍下javascript中ajax的应用)
通常当javascript向服务器发送请求获取数据时,服务器会返回数据。在传统没有使用ajax的网页中,需要刷新页面使其重新加载。而ajax可以使网页在不重新加载页面的情况下对网页的局部进行更新。(比如,当你要放大地图的时候,你会不断的向服务器请求地图当前位置的详细信息,服务器返回数据给你,这里我们并不需要重新加载整个页面,不然用户体验就太差了。而是局部更新页面。)
由于我不可能在这写一个地图这样复杂的例子,而为了演示ajax的使用,我借用了秒秒学的一个简单示例:
// 简单的ajax举例。
// 1: 创建请求变量
var myrequest;
// 的特征检查。
if (window.xmlhttprequest) { //若支持,则是火狐、谷歌等浏览器。
myrequest = new xmlhttprequest();
} else if (window.activexobject) { // 若不支持, 则是ie浏览器。
myrequest = new activexobject("microsoft.xmlhttp");
}
// 2: 为请求添加事件处理代码。
myrequest.onreadystatechange = function(){
console.log("匿名函数被调用!");
console.log(myrequest.readystate);
if (myrequest.readystate === 4) {
var p = document.createelement("p");
var t = document.createtextnode(myrequest.responsetext);
p.appendchild(t);
document.getelementbyid("maincontent").appendchild(p);
}
};
// 3: 配置发送请求
myrequest.open('get', 'simple.txt', true);
myrequest.send(null);
//....
使用ajax主要分三部分,如示例中的
1、 创建请求的变量。
在script文件中,首先声明xmlhttprequest对象,这也是题主说的ajax的核心。浏览器页面能通过xmlhttprequest对象和服务器进行通讯。因为这个对象的创建因浏览器的不同而有区别。所以我们要用if语句判断xmlhttprequest是否存在。
2、 为请求添加事件处理代码
创建好xmlhttprequest对象后,就可以向服务器发送请求了,不过我们首先处理服务器响应的事件。当服务器响应后会触发myrequest对象的onreadystatechange事件。
在onreadystatechange事件中我们看到myrequest调用了readystate属性,readystate有4个值表示目前响应所在的阶段,各数值表示如下:
l 1:请求已经建立,但是还没有发送(还没有调用 send())。
l 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
l 3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
l 4:响应已完成;您可以获取并使用服务器的响应了。
我们一般只关心readystate的值为4的情况,表示响应已完成。
3、 配置发送请求
使用open方法配置请求。它有三个参数:
1、第一个参数表示用get获取服务器中的数据。
2、第二个参数是一个服务器地址,这里我们用本地的simple.txt代替,省去创建服务器的麻烦。
3、第三个参数true表示请求是异步的,即当请求发送后,javascript不会为了等待服务器的响应而阻塞,它会继续执行后续代码。
配置好请求后,用send方法发送请求,这里给send传递的参数是null,若有其它参数需要发送,也可以传递给send方法。
上一篇: 详解Spring注解驱动开发之属性赋值
推荐阅读
-
在JavaScript中操作时间之getUTCDate()方法的使用
-
在JavaScript中处理时间之setMinutes()方法的使用
-
在JavaScript中操作时间之getYear()方法的使用教程
-
在JavaScript中操作时间之setYear()方法的使用
-
设计模式中的组合模式在JavaScript程序构建中的使用
-
ASP.NET中Ajax怎么使用
-
marginbottom在安卓中是什么意思(子元素marginBottom使用方法)
-
在JavaScript中操作时间之setYear()方法的使用
-
在JavaScript中操作时间之getYear()方法的使用教程
-
在JavaScript中处理时间之setMinutes()方法的使用