阿贾克斯(AJAX)
AJAX :Asynchronous JavaScript and XML 异步的javascript 和xml
优点 : 在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分数据
不需要任何的浏览器插件,但需要用户允许javascript在浏览器上执行
应用:运用XHTML+CSS来表达资讯 javascript操作DOM(Document Object Model)
XMLHttpRequest是ajax的基础
现代浏览器(IE7、FIREFOX、CHROME、safari 还有Opera)旧代(IE5、IE6)
语法不同 :variable = new XMLHttpRequest();
Variable = new ActiveXObject(“Microsoft.XMLHTTP”);
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
向服务器发送请求: XMLHttpRequest对象的open() send()方法
xmlhttp.open(method, url, async):method--get或者post类型
Url --文件在服务器上的位置
Async:boolean值 true (异步) false 同步
xmlhttp. Send(String) :String ---post请求
Get方法更简单方便 post:无法使用缓存文件、发送大量数据
例子:get:xmlhttp.open(“get” , “demo_get.html” , true);
xmlhttp.send();
Post: xmlhttp.open(“post” , “demo_post.html” , true);
xmlhttp.setRequestHeader(“content-type” ,“application/x-www-form-urlencoded”);
//向请求添加HTTP头 header 头的名称 value 值
xmlhttp.send(“fname = Bill & lname = gates”);
Async = true : 请规定在响应处于onreadystatechange 时间中 的就绪状态
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById(“muDiv”).innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open(“get” , “test.txt” , true);
xmlhttp.send();
服务器响应: XMLHttpRequest对象的responseText 或者 responseXML
字符串响应数据 XML形式响应
每当readystate改变的时候,就会触发onreadystatechange事件
Readystate存有XMLHttpRequest的状态 0-4
0: 请求未初始化 1:服务器连接已建立
2:请求已接受 3:请求处理中 4:请求已完成,且响应已就绪
Status: 200 “OK” ; 404: 未找到页面
例子:
function showHint(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.asp?q="+str,true);
xmlhttp.send();
}
代码解释: 如果输入框为空 length==0 清空txthint占位符的内容,并退出函数
如果不为空,执行任务:
创建XMLHttpRequest对象 ,当服务器响应就绪时执行函数
把请求发送到服务器上的文件, 注:url中带有个参数q
例子:简化版
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/ajax.js"></script>
<script type="text/javascript">
window.onload=function() {
document.getElementById("username").onblur=function() {
sendAjax("POST", "register.sxt", "username="+this.value, function(result) {
// 向span中显示信息
if(result == "yes") {
document.getElementById("uspan").innerHTML="√";
} else {
document.getElementById("uspan").innerHTML="×";
}
});
};
};
</script>
</head>
<body>
<input type="text" name="username" id="username" /><span id="uspan"></span>
</body>
</html>
Js
function sendAjax(method, url, body, success) {// 钩子函数, 回调函数
var xmlHttp;
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200 || xmlHttp.status == 304) {
// 成功时调用函数
success(xmlHttp.responseText);
}
}
};
xmlHttp.open(method, url);
if(method == "POST") {
// 设置请求头信息, 表示提交数据时按照表单的方式提交
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
xmlHttp.send(body);
}
如果加了数据库内容:
@WebServlet("/register.sxt")
public class RegisterServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select count(*) from users where username=?";
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test401", "root", "root");
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
rs = pstmt.executeQuery();
if(rs.next()) {
if(rs.getInt(1)>0) {
resp.getWriter().print("no");
} else {
resp.getWriter().print("yes");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
阿贾克斯(AJAX)的更多相关文章
- AJAX(一、基本知识)
AJAX:Asynchronous ([ə'sɪŋkrənəs; eɪ-])Javascript (['dʒɑ:və,skrɪpt])and XML 异步的Javascript和XMLAJAX不是新的 ...
- jQuery Datetable
先来个官网可以直接看官网 https://www.datatables.net/manual/data/ 安装 DataTables是一个功能强大的Javascript库,用于为HTML表格添加交互 ...
- Program-Language
1. 主流编程语言 2. 编程语言分类 2.1 编译or解释 2.2 按照客观系统的描述可分为两类 2.3 按照编程范型可分为 3. 语言范式 Paradigm 4. 计算机语 ...
- Ajax异步操作集合啦(阿贾克斯)
/* * Ajax的核心操作对象是xmlHttpRequest * 简化操作步骤:实例化一个xmlHttpRequest对象 ==> 发送请求 ==> 接受响应 ==> 执行回调 * ...
- AJAX(阿贾克斯)的简单应用
1.ajax 对象的属性说明(常用的) (1)open(method,url,boolean);创建请求,method :填请求类型(get post),url :请求的地址, boolean:tru ...
- 进一步理解阿贾克斯(Ajax)
一.ajax简介 1.Asynchronous JavaScript and XML(异步的Javascript和XML) 2.是一种在无需重新加载整个网页的情况下能够更新部分网页的技术. 二.aja ...
- $.ajax()方法详解--极快瑞中的阿贾克斯函数
ajax() 函数和那些abs()函数 sin()这些函数都是底层实现好了,封装好了,可以直接拿来用的 使用者只需要传入参数,然后就可以得到相应的结果 $.ajax({name:value, name ...
- C#-WebForm-AJAX阿贾克斯(二)★★★★★ajax的完整结构★★★★★
ajax完整结构: $.ajax({ url:"",//服务器路径 data:{},//给服务端传递的参数,可以没有,也可以是多个 type:"post", / ...
- 使用AJAX(阿贾克斯)创建级联菜单
1. html页面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
随机推荐
- 我的Java编码规范
1.类名采用驼峰命名法,首字母大写. 2.类变量采用驼峰命名法,首字母小写. 3.方法名是一个动词短语,首字母小写,尽量能描述清楚这个方法的意图. 4.注释在精不在多,一个好的注释要尽量描述出这段代码 ...
- php explode时间分割
<?php $str = "2017-02-27 13:40:42"; $first=explode(' ',$str); $second=explode('-', $fir ...
- JS函数动作分层结构详解及Document.getElementById 释义 js及cs数据类型区别 事件 函数 变量 script标签 var function
html +css 静态页面 js 动态 交互 原理: js就是修改样式, 比如弹出一个对话框. 弹出的过程就是这个框由disable 变成display:enable. 又或者当鼠标指向 ...
- 26_线程池_ThreadPoolExecutor
[ThreadPoolExecutor简述] 无论是Executors类的newFixedThreadPool().newSingleThreadExecutor(),还是newCachedThrea ...
- png的故事:隔行扫描算法
转载自AlloyTeam:http://www.alloyteam.com/2017/06/the-story-of-png-deinterlacing-algorithm/ 前言 前文已经讲解过如何 ...
- 我要为运维说一句,我们不是网管,好不!!Are you know?
运维 运维,这里指互联网运维,通常属于技术部门,与研发.测试.系统管理同为互联网产品技术支撑的4大部门,这个划分在国内和国外以及大小公司间都会多少有一些不同. 一个互联网产品的生成一般经历的过程是:产 ...
- 纯CSS画的基本图形
图形包括基本的矩形.圆形.椭圆.三角形.多边形,也包括稍微复杂一点的爱心.钻石.阴阳八卦等.当然有一些需要用到CSS3的属性,所以在你打开这篇文章的时候,我希望你用的是firefox或者chrome, ...
- 条件独立(conditional independence) 结合贝叶斯网络(Bayesian network) 概率有向图 (PRML8.2总结)
转:http://www.cnblogs.com/Dzhouqi/p/3204481.html本文会利用到上篇,博客的分解定理,需要的可以查找上篇博客 D-separation对任何用有向图表示的概率 ...
- java动态代理的实现以及原理
1.前言 之前对动态代理的技术只是表面上理解,没有形成一个体系,这里总结一下,整个动态代理的实现以及实现原理,以表述的更清楚一些. 2.动态代理的实现应用到的技术 1.动态编译技术,可以使用Java自 ...
- CoreAnimation confusion: CATransaction vs CATransition vs CAAnimationGroup?
http://stackoverflow.com/questions/14042755/coreanimation-confusion-catransaction-vs-catransition-vs ...