-----------------------------------------------
一、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(只需四步)的更多相关文章

  1. 为什么学Python语言,只需四步全面了解Python语言

    为什么学Python语言,只需四步全面了解Python语言每个时代都会悄悄犒赏会选择的人,Python现在风口的语言Python--第三大主流编程语言Python , 是一种面向对象的解释型计算机程序 ...

  2. vuex其实超简单,只需3步

    前言 之前几个项目中,都多多少少碰到一些组件之间需要通信的地方,而因为种种原因,event bus 的成本反而比vuex还高, 所以技术选型上选用了 vuex, 但是不知道为什么,团队里的一些新人一听 ...

  3. 只需一步,DLA开启TableStore多元索引查询加速!

    一.背景介绍 Data Lake Analytics(简称DLA)在构建第一天就是支持直接关联分析Table Store(简称OTS)里的数据,实现存储计算分离架构,满足用户基于SQL接口分析Tabl ...

  4. 如何把C++的源代码改写成C代码?而C改C++只需一步!

    ★ 如何把C++的源代码改写成C代码? C++解释器比C语言解释器占用的存储空间要大,想要在某些特定场合兼容C++代码,同时为了节省有限的存储空间,降低成本,也为了提高效率,将用C++语言写的源程序用 ...

  5. 安装go语言,配置环境及IDE,只需3步

    安装go语言,配置环境及IDE,只需3步 ( 欢迎加入go语言群: 218160862 , 群内有实践) 第1.下载 go压缩包,解压   ,如果你是window系统,请选择go1.5.windows ...

  6. PDF怎么旋转页面,只需几步轻松搞定!

    有时候我们下载一个PDF文件里面有页面是旋转的情况,用手机看的时候可以把手机旋转过来看,那么用电脑的时候总不可能也转过来看吧,笔记本是可以的台式的是不行的,这个时候我们就需要把PDF文件中旋转的页面转 ...

  7. 只需3步,快来用AI预测你爱的球队下一场能赢吗?

    摘要:作为球迷,我们有时候希望自己拥有预测未来的能力. 本文分享自华为云社区<用 AI 预测球赛结果只需三步,看看你爱的球队下一场能赢吗?>,作者:HWCloudAI. 还记得今年夏天的欧 ...

  8. 用keytool创建Keystore和Trustsotre文件只需五步

    用keytool创建Keystore和Trustsotre文件 JSSE使用Truststore和Keystore文件来提供客户端和服务器之间的安全数据传输.keytool是一个工具可以用来创建包含公 ...

  9. 产品开发也要看阵容,APP开发只需五步变得靠谱

    最早认识的一个朋友是程序员,曾经到一家外包公司接单子,小外包公司经常遇到的问题就是和需求方谈产品功能.客户要做外包,对方让他一次性报价,但是客户连功能点自己都不清楚,这时朋友说还是按照具体功能点来做吧 ...

随机推荐

  1. 【红日安全-VulnStack】ATT&CK实战系列——红队实战(二)

    一.环境搭建 1.1 靶场下载 靶场下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/3/ 靶机通用密码:  1qaz@WSX 1.2 环境配置 ...

  2. [Python] iupdatable包:Timer 类使用介绍

    iudatable包是我对常用函数进行的封装后发布的一个python包,教程汇总目录: [Python] iupdatable包使用说明 安装 iupdatable 包 pip install iup ...

  3. 唐诗宋词APP

    古诗词个人爱好,已收集5万多首唐诗以及1万多首宋词,因时间有限目前只开发了苹果版,后期开发安卓版, <风月醉>一 国学经典,有兴趣的可以下载学习古诗词,有问题可以留言哦! https:// ...

  4. ESP定律脱壳

     ESP定律是比较常用的脱壳方式,作为新手用的也比较多简单写一下我的看法. esp定律的使用过程大致为: 1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色),并且只有sp和ip为 ...

  5. Mac 上使用 Shell 脚本 + adb shell 实现简单的 Android 模拟点击自动化测试

    需求 在 A 界面,点击跳转到 B 界面(该界面会执行一些业务),再点击返回键出现 Dialog 弹窗,点击确认退出按钮,返回 A 界面.不断循环. 思路 一开始想到的就是按键精灵,下了 mac 版使 ...

  6. Cassandra与Kafka的集成

    Cassandra和Kafka经常一起用于微服务架构中.本文将介绍几种Cassandra和Kafka常见的集成模式.   简介   如果您的开发团队乐于接纳微服务架构的优点,那么您就会了解到,Kafk ...

  7. [leetcode]118,119PascalsTriangle,杨辉三角1,2

    杨辉三角1Given numRows, generate the first numRows of Pascal's triangle.For example, given numRows = 5,R ...

  8. Python将GIF图片转换成png图片帧

    效果图: 转换之后保存到文件夹中: 代码如下:(第三方库pillow,安装方法:在cmd中输入:  pip install pillow) from PIL import Image import o ...

  9. Turtlebot3新手教程:仿真

    本文章针对如何利用turtlebot3实现仿真功能进行讲解 测试环境:Ubuntu 16.04 和 ROS Kinetic Kame. 注意:TurtleBot3 Simulation 依赖 turt ...

  10. git 合并多次commit

    如果当前分支提交了多次commit,无法merge到master上,就需要合并多出的几次commit 第一步 查看log: git log 第二步 git rebase -i HEAD~2 对最近的两 ...