一、JavaScript实现AJAX(只需四步)
-----------------------------------------------
一、JavaScript实现AJAX(只需四步)
-----------------------------------------------
1、第一步:获取XMLHttpRequest对象
-----------------------------------------------
//(1)获取XMLHttpRequest对象
var xmlHttp = ajaxFunction();
function ajaxFunction(){
var xmlHttp;
try{
//现代浏览器(IE7+、Firefox、Chrome、Safari 和 Opera)都有内建的 XMLHttpRequest 对象
xmlHttp = new XMLHttpRequest();
}catch(e){
try{
//IE6.0
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
//IE5.0及更早版本
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert("...");
throw e;
}
}
}
return xmlHttp;
}
-----------------------------------------------
2、第二步:打开与服务器的连接
//(2)打开与服务器的连接
xmlHttp.open(method, url, async);
参数1:method: 请求方式,可以是GET或POST
参数2:url: 所要访问的服务器中资源的路径,如: /day08/XxxServlet
参数3:async: 是否为异步传输,true表示为异步传输,一般都是true。
-----------------------------------------------
3、第三步:发送请求
//(3)通知服务器发送的数据是请求参数
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //(4)发送请求并传递参数给服务器
xmlHttp.send("xxxx"); //注意,如果不给参数可能会造成部分浏览器无法发送请求
a)如果是GET请求,可以传一个null,参数可以在第2步中拼接在url后面。例如:
xmlHttp.send(null);
b)如果是POST请求,传入的就是请求参数,例如:
xmlHttp.send("username="+username+"&psw="+psw)
-----------------------------------------------
4、第四步,注册监听
在XMLHttpRequest对象的一个事件上注册监听:
onreadystatechange
一共有五个状态:(xmlHttp.readyState)
0状态: 表示刚创建XMLHttpRequest对象,还未调用open()方法
1状态: 表示刚调用open()方法,但是还没有调用send()方法发送请求
2状态: 调用完了send()方法了,请求已经开始
3状态: 服务器已经开始响应,但是不代表响应结束
4状态: 服务器响应结束!(通常我们只关心这个状态)
获取xmlHttp对象的状态:
var state = xmlHttp.readyState;//可能得到0,1,2,3,4
获取服务器响应的状态码
var status = xmlHttp.status;
获取服务器响应的内容
var data = xmlHttp.responseText;//得到服务器响应的文本格式的数据
//(5)注册监听,时刻监听服务器处理请求的状态
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4){
//状态为4表示服务器已经处理完成,但是不代表处理成功
if(xmlHttp.status == 200){//当状态码为200,表示服务器成功的处理了请求
var result = xmlHttp.responseText;
//xxx
}
}
}
-----------------------------------------------
二、jQuery实现AJAX
-----------------------------------------------
1、$.ajax方法
$.ajax(url, [type], [async], [data], [async], [callback]);
参数解析:
url -- 发送请求的URL地址
type -- 可选,请求方式,默认为"GET"。
async -- 可选,默认为true,表示异步交互
data -- 可选,发送至服务器的key/value数据
dataType -- 可选,服务器响应数据的类型,默认是responseXML或responseText,其中可用的数据类型有:
json:返回JSON数据。
xml:返回XML文档,可用JS或jQuery处理。
text:返回纯文本字符串。
html:返回纯文本HTML内容,包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
success -- 可选,请求成功后执行的函数,函数参数:
result -- 服务器返回的数据
代码示例: 校验用户名是否存在
$.ajax({
"url" : "<%= request.getContextPath() %>/AjaxCheckUsernameServlet",
"data" : {"username": username},
"async" : true,
"type" : "POST",
"success" : function(result){
$("#err-msg").html("<font style='color:red'>"+result+"</font>")
}
});
-----------------------------------------------
2、$.get方法、$.post方法
$.get(url, [data], [callback]); -- 请求方式为GET
$.post(url, [data], [callback]); -- 请求方式为POST
参数解析:
url -- 发送请求的URL地址
data -- 可选,向服务器发送的数据
callback -- 可选,请求成功后所执行的函数
代码示例:校验用户名是否存在
$.get("<%= request.getContextPath() %>/AjaxCheckUsernameServlet", {"username": username}, function(result){
$("#err-msg").html("<font style='color:red'>"+result+"</font>");
});
-----------------------------------------------
3、load方法
$(selector).load(url,data,callback);
参数解析:
selector -- 选择器,将从服务器获取到的数据加载到指定的元素中
url -- 发送请求的URL地址
data -- 可选,向服务器发送的数据 key/value数据 如:{"username" : "张飞", "psw" : "123"}
callback -- 可选,load方法完成后所执行的函数
代码示例:
$("#err-msg").load("<%= request.getContextPath() %>/AjaxCheckUsernameServlet", {"username": username});
-----------------------------------------------
一、JavaScript实现AJAX(只需四步)的更多相关文章
- 为什么学Python语言,只需四步全面了解Python语言
为什么学Python语言,只需四步全面了解Python语言每个时代都会悄悄犒赏会选择的人,Python现在风口的语言Python--第三大主流编程语言Python , 是一种面向对象的解释型计算机程序 ...
- vuex其实超简单,只需3步
前言 之前几个项目中,都多多少少碰到一些组件之间需要通信的地方,而因为种种原因,event bus 的成本反而比vuex还高, 所以技术选型上选用了 vuex, 但是不知道为什么,团队里的一些新人一听 ...
- 只需一步,DLA开启TableStore多元索引查询加速!
一.背景介绍 Data Lake Analytics(简称DLA)在构建第一天就是支持直接关联分析Table Store(简称OTS)里的数据,实现存储计算分离架构,满足用户基于SQL接口分析Tabl ...
- 如何把C++的源代码改写成C代码?而C改C++只需一步!
★ 如何把C++的源代码改写成C代码? C++解释器比C语言解释器占用的存储空间要大,想要在某些特定场合兼容C++代码,同时为了节省有限的存储空间,降低成本,也为了提高效率,将用C++语言写的源程序用 ...
- 安装go语言,配置环境及IDE,只需3步
安装go语言,配置环境及IDE,只需3步 ( 欢迎加入go语言群: 218160862 , 群内有实践) 第1.下载 go压缩包,解压 ,如果你是window系统,请选择go1.5.windows ...
- PDF怎么旋转页面,只需几步轻松搞定!
有时候我们下载一个PDF文件里面有页面是旋转的情况,用手机看的时候可以把手机旋转过来看,那么用电脑的时候总不可能也转过来看吧,笔记本是可以的台式的是不行的,这个时候我们就需要把PDF文件中旋转的页面转 ...
- 只需3步,快来用AI预测你爱的球队下一场能赢吗?
摘要:作为球迷,我们有时候希望自己拥有预测未来的能力. 本文分享自华为云社区<用 AI 预测球赛结果只需三步,看看你爱的球队下一场能赢吗?>,作者:HWCloudAI. 还记得今年夏天的欧 ...
- 用keytool创建Keystore和Trustsotre文件只需五步
用keytool创建Keystore和Trustsotre文件 JSSE使用Truststore和Keystore文件来提供客户端和服务器之间的安全数据传输.keytool是一个工具可以用来创建包含公 ...
- 产品开发也要看阵容,APP开发只需五步变得靠谱
最早认识的一个朋友是程序员,曾经到一家外包公司接单子,小外包公司经常遇到的问题就是和需求方谈产品功能.客户要做外包,对方让他一次性报价,但是客户连功能点自己都不清楚,这时朋友说还是按照具体功能点来做吧 ...
随机推荐
- Xtrabackup备份与恢复
一.Xtrabackup介绍 MySQL冷备.mysqldump.MySQL热拷贝都无法实现对数据库进行增量备份.在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况 ...
- Error:java: JDK isn't specified for module 'xxx'异常的解决方法
问题描述 博主启动的项目的时候出现了一个这样的异常 解决方法 打开左上角这个Project Structure
- JavaDailyReports10_09
***************************** 1.2.2 布局管理器 BorderLayout 把容器的布局分为东西南北中五个部位,默认是中间,平铺占满! 1 package awt; ...
- spark集群运行模式
spark的集中运行模式 Local .Standalone.Yarn 关闭防火墙:systemctl stop firewalld.service 重启网络服务:systemctl restart ...
- Elastisearch在kibana下批量处理(mget和bulk)
一.批量查询 有点:能够大大减少网络的请求次数,减少网络开销 1.自定义设置index.type以及document id,进行查询 GET /_mget { "docs":[ { ...
- [Skill] git下载助手
缘由 某些时候需要下载git项目中的某个独立的文件或者文件夹下的内容,克隆全部速度过于慢 搜索下发现有开源的实现,特此记录下 方案 国内不便于fq 源码 服务地址 国外原作者 源码 服务地址 使用方法 ...
- python实现99乘法表
for x in range(1,10): for y in range(1,10): if x>=y: print("%d*%d=%d\t"%(y,x,x*y),end=' ...
- 转载-Oracle 数据库导入导出 dmp文件
首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入.导出数据.补充:1.要新建一个数据库: Oracle数据导入导出imp/exp就相当于oracle数据还 ...
- 牺牲速度来节省内存,Redis是觉得自己太快了吗
前言 正常情况下我们选择使用 Redis 就是为了提升查询速度,然而让人意外的是,Redis 当中却有一种比较有意思的数据结构,这种数据结构通过牺牲部分读写速度来达到节省内存的目的,这就是 zipli ...
- ReentrantLock-源码解析
ReentrantLock类注释 1.可重入互斥锁,意思是表示该锁能够支持一个线程对资源的重复加锁,该锁还支持获取锁的公平和非公平性选择.synchronized关键字隐式的支持重进入. 2.可以通过 ...