Ajax技术之与服务器通信-发送请求与处理响应

Ajax与jQuery 认识Ajax 在传统的Web应用中,每次请求服务器都会生成新的页面,用户在提交请求后,总是要等待服务器的响应。如果前一个请求没有得到响应,则后一个请求就不能发送。由于这是一种独占式的请求,因此如果服务器响应没有结束,用户就只能等待或者不断刷新页面。在等待期间,由于新的页面没有生成,整个浏览器一片空白,而用户只能继续等待。对于用户而言,这是一种不连续的体验,同时,不断的刷新页面也会使服务器的负担加重。 Ajax技术正是为了弥补以上不足在诞生的,Ajax应用在使用javaScript异步发送请求,不用每次请求都 阅读详情

通过上一讲的介绍,我们已经了解了Ajax和Ajax所使用的技术,下面我将介绍应用Ajax如何与服务器通信。

一、发送请求

Ajax可以通过XMLHttpRequest对象实现采用异步方式在后台发送请求。通常情况下,Ajax发送请求有两种,GET请求和POST请求。无论发送哪种请求,都需要经过一下4个步骤。

1)初始化XMLHttpRequest对象。为了提高程序的兼容性,需要创建一个跨浏览器的XMLHttpRequest对象,并且判断XMLHttpRequest对象的实例化是否成功,如果不成功,则给予提示。具体代码如下:

http_request = false;
if(window.XMLHttpRequest){
	http_request = new XMLHttpRequest();
}else if(window.ActiveXObject){
	try{
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			http_request = newActiveXObject("Microsoft.XMLHTTP");
		}catch(e){}
	}
}
if(http_request){
	alert("不能创建XMLHttpRequest实例!");
	return false;
}

2)为XMLHttpRequest对象指定一个返回结果处理函数(即回调函数),用于对返回结果进行处理。具体代码如下:

http_request.onreadystatechange = getResult;

记住不能指定要传递的参数,如果要指定传递的参数,可以使用如下方法:

http_request.onreadystatechange = function(){
	getResult(param);
};


3)创建一个与服务器的连接。在创建时,需要指定发送请求的方式(即GET或POST),以及设置是否采用异步方式发送请求。

例1:异步方式发送GET请求:

http_request.open('GET',url,true);

例2:异步方式发送POST请求:

http_request.open('POST',url,true);

open()方法中的url参数,可以使一个JSP页面的URL地址,也可以是Servlet的映射地址。也就是说,请求处理页,可以是一个JSP页面,也可以是一个Servlet。


小技巧:在指定URL参数时,最好讲一个时间戳追加到该URL参数的后面,这样可以防止因浏览器缓存结果而不能实时得到最新的结果。例如,可以指定URL参数为以下代码:

String url = "deal.jsp?nocache="+new Date().getTime();

4)向服务器发送请求。XMLHttpRequest对象的send()方法可以实现向服务器发送请求,该方法需要传递一个参数,如果发送的是一个GET请求,可以将该参数设置为null;如果发送的是POST请求,可以通过该参数指定要发送的请求参数。

例1:向服务器发送GET请求的代码如下:

http_request.send(null);

例2:向服务器发送POST请求的代码如下:

var param = "user="+form1.user.value + "&pwd="+form1.pwd.value;//组合参数
http_request.send(param);

需要注意的是,在发送POST请求前,还需要设置正确的请求头。具体代码如下:

http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

上面这句代码,需要添加在send()语句之前。

二、处理服务器响应

当向服务器发送请求后,接下来就需要处理服务器响应。在向服务器发送请求时,需要通过XMLHttepRequest对象的onreadystatechange属性指定一个回调函数,用于处理服务器响应。在这个回调函数中,首先需要判断服务器的请求状态,保证请求已经完成;然后再根据服务器的HTTP状态码,判断服务器对请求的响应是否成功(具体数值表示的含义详见上一讲),如果成功,则获取服务器的响应反馈给客户端。


XMLHttpRequest对象提供了两个用来访问服务器响应的属性,一个是responseText属性,返回字符串响应;另一个是responseXML属性,返回XML响应。

1、处理字符串响应

字符串响应通常应用在响应不是特别复杂的情况下。例如,将响应显示在提示对话框中,或者响应只是显示成功或失败的字符串。现在流行的数据交互格式json,本质上也是字符串,后续为大家详细解读json。

例:将字符串响应显示到提示对话框中的回调函数的具体代码如下:

function getResult(){
	if(http_request.readyState==4){            //判断请求状态
		if(http_request.status==200){		   //请求成功,开始处理返回结果
			alert(http_request.responseText);
		}else{
			alert("您所请求的页面有错误!");
		}
	}
}

如果需要将响应结果显示到页面的指定位置,也可以在页面的合适位置添加一个<div>或<span>标记,设置该标记的id属性,如div_result,然后在回调函数中应用以下代码显示响应结果:

document.getElementById("div_result").innerHTML=http_request.responseText;

2、处理XML响应

如果在服务器端需要生成特别复杂的响应,那么就需要应用XML响应。应用XMLHttpRequest对象的responseXML属性,可以生成一个XML文档,而且当前浏览器已经提供了很好的解析XML文档对象的方法。

例:保存图书信息的XML文档。具体代码如下:

<?xml version="1.0" encoding="UTF-8"/>
<mr>
	<books>
		<book>
			<title>Java Web开发宝典</title>
			<publisher>人民邮电出版社</publisher>
		</book>
		<book>
			<title>Java开发宝典</title>
			<publisher>机械工业出版社</publisher>
		</book>
	</books>
</mr>

在回调函数中遍历保存图书信息的XML文档,并将其显示到页面中的代码如下:

function getResult(){
	if(http_request.readyState==4){            //判断请求状态
		if(http_request.status==200){		   //请求成功,开始处理返回结果
			var xmldoc = http_request.responseXML;
			var str = "";
			for(i=0;i<xmldoc.getElementsByTagName("book").length;i++){
				var book = xmldoc.getElementsByTagName("book").item(i);
				str=str+"《"+book.getElementsByTagName("title")[0].firstChild.data+"》由“"+book.getElementsByTagName("publisher")[0].data+"”出版<br>";
			}
			document.getElementById("book").innerHTML=str;        //显示图书信息
		}else{
			alert("您锁清秋的页面有错误!");
		}
	}
}
<div id="book"></div>


通过上面的代码获取的XML文档的信息如下:

《Java Web开发宝典》由“人民邮电出版社”出版
《Java开发宝典》由“机械工业出版社”出版

Ajax:JavaScript中的异步通信技术 Ajax(Asynchronous JavaScript and XML)是一种在JavaScript中使用的异步通信技术。它允许网页在不刷新整个页面的情况下,通过与服务器进行数据交换来更新部分页面内容。本文将详细介绍Ajax的原理、使用方法和相应的源代码示例。 阅读详情

相关推荐

视觉定位避坑指南:基于双mark点的坐标转换常见错误排查

本文详细解析了工业视觉项目中基于双mark点的坐标转换常见错误及排查方法,涵盖旋转矩阵构建、坐标系原点选择、图像预处理优化等关键环节。通过实战案例和代码示例,帮助工程师避免定位偏差,提升系统精度,特别适用于自动化检测和精密制造场景。

7z8x2c4v6b9的博客 168

AJAX入门 之 向服务器发送请求与服务器的响应(二)

AJAX 工作原理 1.客户端触发一个事件,时间产生一个 XMLHttpRequest 对象,发送 Http 请求到 Internet 。 2.服务器端接收到 Http 请求以创建一个响应,将数据发送到 Internet 使得传输到客户端。 3.客户端通过 JS 获取数据,更新页面。 AJAX - 向服务器发送请求请求 XMLHttpRequest 对象用于和服务器交换数据。如需将请求发

稚枭天卓 1969

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 525

XMLHttpReques对象初认识

首先,我们都知道AJAX是融合了多门技术(JS/XML/CSS等),而运用了新的思想,采用异步操作,来让我们的网页在不刷新的情况下,就可以自动的获取页面信息。而AJAX的核心功能离不开我们的XMLHttpRequest。现在我们就来对它进行初步的了解。 例子:         下面是网上的一个小例子,我们来一起分析一下。 try{ var

飞翔的肥仔 1611

从建模到调参:基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程解析

本文详细解析了基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程。从运动学建模入手,对比了基于距离与基于位置偏差的两种控制策略,并重点阐述了高精度轨迹跟踪的控制器设计、Simulink仿真搭建及PID参数整定方法,为移动机器人运动控制提供了完整的仿真实践指南。

weixin_29169505的博客 314

TTL电路搭建半加器实验:操作指南完整版

通过TTL电路搭建半加器,详解逻辑设计与实验步骤,帮助掌握数字电路中的半加器工作原理与实际应用,适合电子技术初学者动手实践。

weixin_42524864的博客 356

AJAX - 向服务器发送请求

XMLHttpRequest 对象用于和服务器交换数据。

m0_65696193的博客 444

帕德伯恩大学轴承数据集(PU)介绍

PU数据集介绍一、帕德伯恩大学轴承数据集故障类别说明二、关于损伤描述2.1 损伤组合:2.2 重复和多重损伤的安排:2.3 几何尺寸2.4 损伤程度2.5损伤特征数据集损伤类别三、人为损坏轴承3.1 最常用的人为损伤制造方法是:3.2 本数据集使用的人工损坏是由三种不同方法引起的四、通过加速寿命试验产生真正的轴承损坏样本 一、帕德伯恩大学轴承数据集 数据集下载地址 从帕德伯恩大学获得的PU数据集是一个6203轴承数据集,包括人为诱发的和真实的损害。采用压电加速度计采集轴承座的振动信号,采样频率为64 kHz

m0_47180208的博客 3万+

【03】AJAX 向服务器发送请求

AJAX 向服务器发送请求 创建 XMLHttpRequest 对象后,就可以向服务器发送请求了。XMLHttpRequest 对象的 open() 方法和 send() 方法用来向服务器发送请求。注意:AJAX 向服务器发送的是 http 请求,与我们浏览网页时发送的 http 请求一样。我们可以右键查看当前网页的源代码,由很多 HTML、CSS和JavaScript 组成,...

weixin_30767921的博客 161

【前端圭臬】二:你知道的和不知道的 HTML

关于 HTML,说几个你可能不太关注的问题。

Evan 的博客 4758

IPCP(IP Control Protocol,IP控制协议)

IPCP(IP Control Protocol,IP控制协议)

天赐好车的博客 757

Ajax

Ajax1.Ajax A javascript a xml 用JS和xml实现在页面不刷新下,和后台服务器进行数据通讯2.ajax的作用 a)页面无刷新验证b)地图应用 c)局部数据刷新 d)瀑布流3.需要de技术 a)javascript b)css c)html d)php e)dom操作4.学习Ajax就是学习 一个对象 XMLHttpRequest对象该对象简称 XHR对...

weixin_30408675的博客 99

CANoe中如何仿真报文的CRC和Counter,告诉你三种方法皆可实现

CANoe中如何仿真报文的CRC和Counter

蚂蚁小兵 5284

NodeJs中Ajax使用

(异步JavaScript和XML)Asynchronous JavaScript + XML, 其本身不是一种新技术,而是一个在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML or XHTML, Cascading Style Sheets, JavaScript, The Document Object Model,...

Science Explorer 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Ajax技术

1、Ajax简介 随着Web2.0概念的普及,追求更人性化、更美观的页面效果成了网站开发的必须。Ajax正在其中充当着重要角色。由于Ajax是一个客户端技术,所以无论使用哪种服务器技术(如JSP、PHP、ASP.NET等)都可以使用Ajax。相对于传统的Web应用开发,Ajax运用的是更加先进、更加标准化、更加高效的Web开发技术体系。 1.1 Ajax开发模式与传统开发模式的比较 互联网发...

pan_junbiao的博客 3726

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Ajax的封装

Ajax的初识理解 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)是浏览器提供的一套方法,实现页面无刷新即可更新数据,提高用户浏览网站应用的体验 Ajax技术需要运行在网站环境中才能生效。 Ajax应用场景: 页面上拉加载更多数据 列表数据无刷新分页 表单项离开焦点数据验证 搜索框提示文字下拉列表 ...... Ajax运行原理: Ajax相对于浏览器发送请求和接收响应的代理人,实现

m0_63500235的博客 1552

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

简单理解 Ajax

 Ajax 不是用于浏览器与服务端进行通信的工具,而是以 XMLHttpRequest 为核心,包括 HTML/XHTML、CSS、JavaScript、DOM、XML以及XSLT的一种用于实现网页局部刷新的集合技术。

dark_cy的博客 943

ajax请求构成,突破:Ajax请求

==> 本人文章纯属个人理解,如有差池万望斧正<==Ajax的介绍Ajax请求是现代网页最重要的构成元素之一,通过这项技术,用户可以在不重载整个页面的情况下,完成局部数据的交互与刷新。如果这项功能不存在,那每一次向服务器申请数据,所有内容都需要重新下载、排列。虽然听上去这是一个凌驾于网页规则之上的高阶技术。但本质上它仍然是http请求,或者说主要以该请求为载体,这个请求可以具备HTTP...

weixin_39608063的博客 277

java中使用Ajax技术

      ajax技术是使页面能局部刷新的一种技术,全称应该是asynchronous JavaScript and xml从几个单词就知道它的请求响应的处理是异步的,而且使用的是JavaScript和xml技术.      我们在java中使用ajax技术最简单的是使用它的一个框架dwr只要导入这个包,做相应的配置,可是我要说的是比较麻烦的就是使用XmlHttpRequest组件.具体的代

独孤雄的专栏 1259

使用Ajax

认识Ajax: 是一种全新的客户端与服务器之间的异步交互技术,整个交互 过程无需重新加载整个客户端页面,可以实现页面的局部刷新。 ​ XMLHttpRequest对象被称做Ajax引擎,该对象在JavaScript中创建并 使用,它负责发送客户端对服务器端的请求;同时接收服务器端的响 应信息,整个交互过程不必刷新当前页面。 作用:ajax 主要是实现页面和 web 服务器之间数据的异步...

weixin_44799698的博客 190

Ajax 是什么? 如何创建一个 Ajax?

在上世纪90年代,几乎所有的网站都由HTML页面实现,服务器处理每一个用户请求都需要重新加载网页。用户体验极差!由于每次应用的沟通都需要向服务器发送请求,应用的回应时间依赖于服务器的回应时间。这导致了用户界面的回应比本机应用慢得多。 在 2005 年,Google 通过其 Google Suggest 使 AJAX 变得流行起来。 Google Suggest 使用 AJAX...

越努力,越幸运! 3707

ajax异步刷新的几大过程,异步编程|五分钟让你学会局部刷新Ajax技术

前言Ajax是Asynchronous JavaScript and XML的缩写,是JavaScript、XML、CSS、DOM等多个技术的组合。Ajax的工作原理是一个页面的指定位置可以加载另一个页面所有的输出内容,这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。所以Ajax技术实现了一个静态网页在不刷新整个页面的情况下与服务器通信,减少了用户等待时间,同时也降低了网络流量,增强...

weixin_42566209的博客 525

Ajax实现步骤和原理解析例子解析

Ajax(Asynchronous JavaScript and XML)是一种在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容的技术。

IT老农民的博客 834

Ajax-原生JS中的Ajax

概述 AJAX是异步的JavaScript和XML(Asynchronous JavaScript And XML)。简单点说,就是使用 XMLHttpRequest 对象与服务器通信。 它可以使用JSON,XML,HTML和text文本等格式发送和接收数据。AJAX最吸引人的就是它的“异步”特性,也就是说他可以在不重新刷新页面的情况下与服务器通信,交换数据,或更新页面。 你可以使用AJAX最主要的两个特性做下列事: 在不重新加载页面的情况下发送请求给服务器。 接受并使用从服务器发来的数据。...

whyrookie的博客 147

AJAX技术的基本实现以及了解

Ajax技术的基本使用 1.什么是Ajax ajax是一种创建交互式网页应用的网页开发技术,用于浏览器和服务器之间进行数据交互,使用异步数据传输(http请求),这样的好处是可以是网页从服务器请求少量信息,不是整个页面, 总结来说,AJAX是异步的JavaScript 和xml ,是一种用于创建更好 更快的,交互性更强的Web应用程序的技术,AJAX是一种独立web服务器软件的浏览器技术,它不是一种新的编程语言是一种技术 2.XMLHttpRequest 浏览器在XMLHttpRequest类上定义了它们的

m0_47310515的博客 189

ajax学习笔记(附源码)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言,但是现在广泛用于各种语言中。JSON使用简单的文本格式来表示各种类型的数据结构,例如对象、数组、字符串和数字。JSON的语法规则很简单,通常使用花括号表示对象,方括号表示数组,冒号用于表示属性名和值的对应关系,逗号用于分隔各个属性或数组元素。JSON数据通常使用双引号来表示字符串,因此不能包含双引号。JSON通常用于在Web应用程序中传输数据。

m0_64887345的博客 484
上一篇: Ajax技术之XMLHttpRequest对象详解
下一篇: Ajax技术之与服务器通信-一个完整的实例(实现检测用户名是否唯一功能)
Yes_JiangShuai
博客等级 码龄10年 149粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值