一、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开发只需五步变得靠谱
最早认识的一个朋友是程序员,曾经到一家外包公司接单子,小外包公司经常遇到的问题就是和需求方谈产品功能.客户要做外包,对方让他一次性报价,但是客户连功能点自己都不清楚,这时朋友说还是按照具体功能点来做吧 ...
随机推荐
- Ext CheckBoxGroup使用
一.效果图展示 我这里主要是为了实现选择周期时间.如周一.周二.周三等 二.界面界面代码 下面就是我实现的代码,包含了界面.数据处理.回填数据等.可能架构的方式,您的代码和我的代码有差异,但是大体就是 ...
- 连接数据库查询 将查询结果写入exce文件中
package com.cn.peitest.connectDatabase; import java.io.File; import java.lang.reflect.Field; import ...
- Spring源码--debug分析循环依赖--构造器注入
目的:源码调试构造器注入,看看是怎么报错的. spring:5.2.3 jdk:1.8 一.准备 首先准备两个循环依赖的类:userService和roleServic <bean id=&qu ...
- http协议中的缓存机制
强缓存 - expires,服务器给客户端一个过期日期,如(2020-12-12),过了该时间,客户端请求服务器重新获取.存在问题:客户端与服务端存在时间差,会导致过期时间不准确 - Cache-co ...
- 在.NET Core中使用Channel(一)
我最近一直在熟悉.net Core中引入的新Channel<T>类型.我想在它第一次发布的时候我了解过它,但是有关文章非常非常少,我不能理解它们与其他队列有什么不同. 在使用了一段时间后, ...
- std::thread线程库详解(2)
目录 目录 简介 最基本的锁 std::mutex 使用 方法和属性 递归锁 std::recursive_mutex 共享锁 std::shared_mutex (C++17) 带超时的锁 总结 简 ...
- 简单做了一个代办事项列表系统 ,增删改查。 前台页面用 jquery 后台用nodejs ,数据库用的是mongdoDB 。
引入npm 第三方mongoose包连接mongoDb本地数据库todolist const mongoose = require('mongoose'); mongoose.connect('mon ...
- phpstorm 注册码破解
激活码1 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2ln ...
- python中环境变量的使用
前言 之前就经常用,今天来凑个篇数. 在开发的过程中,我们经常会将代码中某些可能更改的,比如redis地址,数据库地址,限流阈值等参数写活来提高灵活性, 传统的方式可能是写在配置文件中,比如 xml ...
- 认识webservice
1.为什么需要webservice? 目前还有很多商用程序继续在使用C++.Java.Visual Basic和其他各种各样的语言编写.现在,除了最简单的程序之外,所有的应用程序都需要与运行在其他异构 ...