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)的更多相关文章

  1. AJAX(一、基本知识)

    AJAX:Asynchronous ([ə'sɪŋkrənəs; eɪ-])Javascript (['dʒɑ:və,skrɪpt])and XML 异步的Javascript和XMLAJAX不是新的 ...

  2. jQuery Datetable

    先来个官网可以直接看官网  https://www.datatables.net/manual/data/ 安装 DataTables是一个功能强大的Javascript库,用于为HTML表格添加交互 ...

  3. Program-Language

    1. 主流编程语言 2. 编程语言分类     2.1 编译or解释     2.2 按照客观系统的描述可分为两类     2.3 按照编程范型可分为 3. 语言范式 Paradigm 4. 计算机语 ...

  4. Ajax异步操作集合啦(阿贾克斯)

    /* * Ajax的核心操作对象是xmlHttpRequest * 简化操作步骤:实例化一个xmlHttpRequest对象 ==> 发送请求 ==> 接受响应 ==> 执行回调 * ...

  5. AJAX(阿贾克斯)的简单应用

    1.ajax 对象的属性说明(常用的) (1)open(method,url,boolean);创建请求,method :填请求类型(get post),url :请求的地址, boolean:tru ...

  6. 进一步理解阿贾克斯(Ajax)

    一.ajax简介 1.Asynchronous JavaScript and XML(异步的Javascript和XML) 2.是一种在无需重新加载整个网页的情况下能够更新部分网页的技术. 二.aja ...

  7. $.ajax()方法详解--极快瑞中的阿贾克斯函数

    ajax() 函数和那些abs()函数 sin()这些函数都是底层实现好了,封装好了,可以直接拿来用的 使用者只需要传入参数,然后就可以得到相应的结果 $.ajax({name:value, name ...

  8. C#-WebForm-AJAX阿贾克斯(二)★★★★★ajax的完整结构★★★★★

    ajax完整结构: $.ajax({ url:"",//服务器路径 data:{},//给服务端传递的参数,可以没有,也可以是多个 type:"post", / ...

  9. 使用AJAX(阿贾克斯)创建级联菜单

    1. html页面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

随机推荐

  1. 洛谷P3953 逛公园(dp 拓扑排序)

    题意 题目链接 Sol 去年考NOIP的时候我好像连最短路计数都不会啊qwq.. 首先不难想到一个思路,\(f[i][j]\)表示到第\(i\)个节点,与最短路之差长度为\(j\)的路径的方案数 首先 ...

  2. 2d动画开发之PIXI开发

    简单的移动小游戏只要引入pixi.min.js就可以, 如果要用spine动画(龙骨也支持导出spine格式的)就要引入pixi-spine.js 如果还有声音的支持引入pixi-sound.js 学 ...

  3. CentOS7 下安装 SublimeText3

    原文地址:http://www.sundabao.com/centos-%E5%AE%89%E8%A3%85sublime-text-3/ Centos 安装Sublime text 3 Centos ...

  4. Vue入门基础(火柴)

    前言 由于个人十分欣赏博友——小火柴的蓝色理想,他的博文我看了大多数,觉得十分的精彩,然而很多都是看后即忘.我想除了没有经常动手敲代码,更可能是在看的时候忽略了很多细节,因此打算把他的博文通通给“抄袭 ...

  5. 一、CSS实现横列布局的方法总结

    一.使用float实现横列布局的方法 如下面所示:DIV1和DIV2都可以选择向左或者向右浮动50%来实现展示在同一行 div1 div2 实现下面图片中布局的css样式如下: 分析: 1.第一行第一 ...

  6. HTML5时代的纯前端上传图片预览及严格图片格式验证函数(转载)

    原文地址:http://www.2cto.com/kf/201401/274752.html 一.要解决什么样的问题? 在写这个函数之前,有们童鞋在群里问如何纯前端严格验证图片格式.这在html5时代 ...

  7. 使用WdatePicker日期组件时,选择日期后,执行某个方法

    WdatePicker({onpicked:function(){alert(123);},dateFmt:'yyyy年MM月dd日',maxDate:'%y-%M-%d'}) 1.onpicked: ...

  8. [翻译] RKCardView

    RKCardView Beautiful Twitter / Facebook style cards (built with @JaredTMoskowitz) Follow me on Twitt ...

  9. 大数据学习---大数据的学习【all】

    大数据介绍 什么是大数据以及有什么特点 大数据:是指无法在一定时间内用常规软件工具对其内容进行抓取.管理和处理的数据集合. 大数据是一种方法论:“一切都被记录,一切都被数字化,从数据中寻找需求,寻找知 ...

  10. Spark Executor内幕彻底解密:Executor工作原理图、ExecutorBackend注册源码解密、Executor实例化内幕、Executor具体工作内幕

    本课主题 Spark Executor 工作原理图 ExecutorBackend 注册源码鉴赏和 Executor 实例化内幕 Executor 具体是如何工作的 Spark Executor 工作 ...