java编程学习,1分钟学会AJAX异步请求,远离bug不再有

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

给你学习路线:html-css-js-jq-javase-数据库-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

AJAX技术

1.ajax技术

1.1.什么是ajax

小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

Ajax技术:

主要是把html、css、js、dom 技术结合在一起使用。

在页面不刷新的情况下,和后台的服务器,以及程序进行数据的传输。

页面不刷新:用户在操作页面的时候,当某个操作结束之后,使用AJAX技术和服务器进行交互,但是用户还可以继续再页面上进行其他的操作。用户并不会感觉到页面在和后台交互。

ajax常见应用:

地图、注册页面光标离焦之后验证某些数据是否可用等(用户可用,用户存在,都是到后台进行交互)。

1.2.ajax的作用

ajax:在页面不刷新的情况下和服务器进行交互。获取服务器中的任何数据。

1.3.ajax快速入门案例

1.3.1.ajax和服务器交互的本质

1.3.2.获取XMLHttpRequest对象

XMLHttprequest对象是所有浏览器内置的对象。这个对象负责和服务器之间进行数据的交互。我们在JS代码中,先得到XMLhttprequest对象,然后通过这个对象的向服务器发送数据,同时还要使用这个对象接收服务器的响应数据,在获取到响应数据之后,使用JS和dom技术,把数据添加到当前的页面上。

function createXMLHttp(){

var xmlhttp;

/*

在JS中所有的 非 零、 非null 、 非undefined 都可以任务是 true

window.XMLHttpRequest 使用window对象,调用XMLHttpRequest,

如果当前window对象有XMLHttpRequest,这时就会得到XMLHttpRequest,

如果当前的window对象没有XMLHttpRequest,这时会得到undefined

*/

if (window.XMLHttpRequest){//如果能拿到就表示有这样一个对象、如果没有拿到就认为是nudinfed

// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}

else{

// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

return xmlhttp;

}

1.4.XMLHttpRequest API 详解

1.4.1.onreadystatechange属性

在xmlhttprequest对象中,提供onreadystatechange属性。这个属性会随着客户端和服务器之间的交互变化提供不同的内容。

onreadystatechange 它需要和一个函数进行绑定,在客户端和服务器之间的状态在改变的时候,都会导致onreadystatechange绑定的函数运行。

1.4.2.open方法

在获取到xmlhttprequest对象之后,我们可以使用这个对象和服务器进行交互,页面不刷新。

获取到xmlhttprequest对象之后,需要和服务器建立连接通道。在xmlhttprequest对象中提供的open方法

open方法中的第一个参数:

设置向服务器发送请求时提交数据的方式:get和post

open方法中的第二个参数:

本次请求的服务器的资源路径。

open方法的第三个参数:

true:表示页面的处理和后台发送请求是异步进行。一般都设置true。

false:页面的处理和后台是同步。

1.4.3.Send()方法

send是将请求的数据发送给服务器。send方法中的参数,只有在post请求时才能书写。

如果get方式,直接书写send,括号中不要书写任何内容。

1.4.4.setRequestHeader方法

如果使用post方式和服务器交互,并且在send中携带参数,需要通过xmlhttprequest中的setRequestHeader设置请求头信息。

1.4.5.readyState属性

onreadystatechange 事件是针对xmlhttprequest对象和服务器之间交互的

每个状态改变的时候,都会导致onreadystatechange执行。

测试 它xmlhttprequest和服务器之间的状态改变:

xmlhttprequest中提供另外的两个属性:

readyState:记录客户端和服务器之间每步状态变化

status:记录服务器和客户端之间响应的信息变化

1.4.6.status属性

1.4.7.responseText属性

小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

xmlhttprequest对象中提供的2个属性来获取服务器响应的数据:

responseText:它接收服务器响应的所有文本数据。

responseXML:它接收服务器响应的xml格式的数据。

后台响应数据的时候,设置如下:

ajax中使用responseText接收响应的数据。

1.4.8.responseXML属性-了解

ajax中使用responseXML接收数据。

这时接收到的数据之后,需要使用JS和xml DOM技术解析响应的xml文档数据。

1.5.ajax技术和服务器交互模版代码:

【XMLHttpRequest】:

Ø属性:

* readyState :XMLHttpRequest的状态

* onreadystatechange :当XMLHttpRequest状态改变的时候触发一个函数.

* status :获得响应的状态码. 200 , 404 ...

* responseText :获得响应的文本数据.

* responseXML :获得响应的XML的数据.

Ø方法:

* open(请求方式,请求路径,是否异步) :异步去向服务器发送请求.

* send(请求参数) :发送请求.

* setRequestHeader(头信息,头的值) :处理POST请求方式的中文问题.

Ø创建XMLHttpRequest对象:

* IE :将XMLHttpRequest对象封装在一个ActiveXObject组件.

* Firefox :直接就可以创建XMLHttpRequest对象.

function createXMLHttp(){

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");

}

return xmlhttp;

}

【AJAX的入门】

ØAJAX的编写的步骤:

Ø* 第一步:创建一个异步对象.

* 第二步:设置对象状态改变触发一个函数.

* 第三步:设置向后台提交的路径

* 第四步:发送请求.

ØGET方式提交请求:

function ajax_get() {

// 1.创建异步对象

var xhr = createXMLHttp();

// 2.设置状态改变的监听 回调函数.

xhr.onreadystatechange = function(){

if(xhr.readyState == 4 && xhr.status == 200){ // 请求发送成功 // 响应也成功

// 获得响应的数据:

var data = xhr.responseText;

// 将数据写入到DIV中:

document.getElementById("d1").innerHTML = data;

}

}

// 3.设置请求路径

xhr.open("GET","/day15/ServletDemo1?name=aaa&pass=123",true);

// 4.发送请求

xhr.send();

}

ØPOST方式提交请求:

function ajax_post(){

// 创建异步对象:

var xhr = createXMLHttp();

// 设置监听:

xhr.onreadystatechange = function(){

if(xhr.readyState == 4 && xhr.status == 200){ // 请求发送成功 // 响应也成功

// 获得响应的数据:

var data = xhr.responseText;

// 将数据写入到DIV中:

document.getElementById("d1").innerHTML = data;

}

}

// 打开路径:

xhr.open("POST","/day15/ServletDemo1",true); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

// 发送请求 post携带参数:

xhr.send("name=张三&pass=123");

}

1、获取xmlhttprequest对象

将获取xmlhttprequest对象的js代码单独封装到一个js文件,在需要的jsp页面中导入

var xhr = getXMLHttpRequest();

2、打开连接

xhr.open(“get|post”,”请求的资源路径”,true);

3、发送数据

xhr.send(“携带 参数,仅限于post方式”);

4、设置onreadystatechange事件对应的函数

5、在函数中判断readyState==4 && status == 200

6、使用responseText获取响应的数据

1.6.案例:

1.6.1.面页准备:

1.6.2.Ajax代码

后台servlet代码

1.7.案例:

1.7.1.Jquery代码:

$(function(){

//获取input标签

$("#username").blur(function(){//给用户名绑定一个离焦事件

// alert(000);

//获取用户输入的信息

var username = $(this).val();

// alert(username);字母 数字 下划线

if( !username.match("^\w{4,12}$")){

//如果用户输入的不符合校验就给用户一个错误提示。把错误提示写到span里

$("#username_res").html("用户名必须由4~12位字母,数字,下划线组成");

}else{

$.ajax({

type: "POST",

url: "${pageContext.request.contextPath}/demo",

data: "username="+username,

success: function(data){

$("#username_res").html(data);

}

});

}

});

});

//清楚请输入用户名

function clearUserName(){

//获取input标签

var input_name = document.getElementById("username");

//判断value值里的内容(请输入用户名)

if(input_name.value == "请输入用户名"){

input_name.value="";

}

}

小编推荐一个学Java的学习裙【 六五零,五五四,六零七 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

1.7.2.Servlet代码:


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容