ExtJS(二)--AJAX基础

深入学习前端技术:AJAX, EXTJS, jQuery, DWR, Prototype AJAX(Asynchronous JavaScript and XML)是一种无需重新加载整个页面,而能够更新部分网页的技术。它利用了JavaScript在浏览器端与服务器进行异步通信的能力。AJAX的核心在于通过XMLHttpRequest对象发送异步请求,根据返回的数据动态更新网页内容,从而实现更加流畅的用户体验。EXTJS是一个用纯JavaScript编写的开源框架,最初由Jack Slocum开发,基于YUI Library(Yahoo! 阅读详情

       最近在学习ExtJS,在学习到AJAX的一些基础知识时便总结出来和大家分享一下,适合于初学者看看,大神可以绕过!

一、AJAX概念

       AJAX是AsynchronousJavascript And Xml的简写,它不是一门新的技术,而是几门技术的综合应用,是WEB2.0时代出现的一种异步通信技术。其中最核心的是在Javascript中调用一个叫XMLHttpRequest类,使用XMLHttpRequest这个类可以不用刷新整个网页就可以跟服务器端进行通信,同时再由这个类负责处理服务器端响应回来的信息,然后再通过Javascript中DOM编程将处理好的信息结果添加到网页上,从而实现了一个网页的局部刷新。提升了用户的体验,同时也减轻了WEB服务器的压力。

二、AJAX的特点

  1. 页面可以保持不变都能完成用户所有的请求。也就是说在客户端浏览器请求服务器端的一个页面回来后,这个页面可以一直保持不变,用户所有的请求操作都由javascript代码发送到服务器端,当服务器响应回来的时候,也是由javascript代码进行处理返回来的信息,然后动态的添加到这个页面上,而不用刷新整个页面,页面还是原来的那个页面。
  2. 增强用户的体验。当用用户在浏览网页的时候,同时与服务器进行异步交互和实现网页内容的局部更新。例如:用户登陆和注册的时候,输入框的焦点失去的时候,就可使用AJAX请求异步与后台交互进行用户名的校验。还有就是密码安全等级的判断等等都应用到AJAX技术。

三、AJAX的工作原理

  1. AJAX技术采用异步交互方式,从而消除了传统WEB应用的同步交互方式那种“请求---响应---请求---响应.....”的过程,而可以采用“请求---请求----请求---响应---请求---响应---响应.......”这种方式,这样可以提升用户体验,减轻WEB服务器的压力。
  2. 用户的浏览器本身就内嵌了一个XMLHttpRequest类,使用该类的对象可以在浏览器执行任务的时候就装载AJAX引擎,这个AJAX引擎就可以跟服务器进行异步通信,它可以独立于用户与网络服务器间的交流。所以就可以使用javascript来调用AJAX引擎来代替用户产生一个HTTP动作,这样内存中的数据编辑、页面导航、数据校验这些不需要重新载入整个页面的需求就可以交给AJAX来执行了。

         如下图:

四、AJAX所包含的技术

     AJAX:(AsynchronousJavaScript and XML)并不是一项新技术,是多种技术的综合,包括Javascript、XHTML和CSS、DOM、XML和XMLHttpRequest.

  1. 服务器端语言:服务器需要具备向浏览器发送特定信息的能力。Ajax与服务器端语言无关。
  2. XML (eXtensible Markup Language,可扩展标记语言)是一种描述数据的格式。AJAX程序需要某种格式化的格式来在服务器和客户端之间传递信息,XML是其中的一种选择。
  3. XHTML(eXtended Hypertext Markup Language,使用扩展超媒体标记语言)和CSS(Cascading Style Sheet,层叠样式表)标准化呈现。
  4. DOM(Document Object Model,文档对象模型)实现动态显示和交互。
  5. 使用XMLHTTP组件XMLHttpRequest对象进行异步数据读取。
  6. 使用JavaScript绑定和处理所有数据。

五、AJAX的缺陷

      AJAX技术也不是很完美的,也存在下面的缺陷:

  1. AJAX大量使用javascript和ajax引擎,而这个取决于浏览器本身对AJAX技术的支持。

    IE5.0及以上、Mozilla1.0、NetScape7及以上版本才支持,Mozilla虽然也支持AJAX,但是提供XMLHttpRequest的方式不一样。所以,使用AJAX的程序必须测试针对各个浏览器的兼容性。

  2. AJAX更新页面内容的时候并没有刷新整个页面,因此,网页的后退功能是失效的;有的用户还经常搞不清楚现在的数据是旧的还是已经更新过的。这个就需要在明显位置提醒用户“数据已更新”。

六、XMLHttpRequest对象
       XMLHttpRequest是XMLHTTP组件的对象,通过这个对象,AJAX可以像桌面应用程序一样只同服务器进行数据层面的交换,而不用每次都刷新界面,也不用每次将数据处理的工作都交给服务器来做;这样既减轻了服务器负担又加快了响应速度、缩短了用户等待的时间。

        XMLHttpRequest最早是在IE5中以ActiveX组件的形式实现的。非W3C标准.
        创建XMLHttpRequest对象(由于非标准所以实现方法不统一)
  1. InternetExplorer把XMLHttpRequest实现为一个ActiveX对象
  2. 其他浏览器(Firefox、Safari、Opera…)把它实现为一个本地的JavaScript对象。
  3. XMLHttpRequest在不同浏览器上的实现是兼容的,所以可以用同样的方式访问XMLHttpRequest实例的属性和方法,而不论这个实例创建的方法是什么。
  4. XMLHttpRequest对象方法           
     

    方法

     
     

    描述

     
     

    abort() 

     
     

    停止当前请求 

     
     

    getAllResponseHeaders() 

     
     

    把http请求的所有响应首部作为键/值对返回

     
     

    getResponseHeader("headerLabel") 

     
     

    返回指定首部的串值

     
     

    open(“method”,”url”)

     
     

    建立对服务器的调用,method参数可以是GET,POST。url参数可以是相对URL或绝对URL。这个方法还包括3个可选参数。 

     
     

    send(content)

     
     

    向服务器发送请求

     
     

    setRequestHeader("label", "value")

     
     

    把指定首部设置为所提供的值。在设置任何首部之前必须先调用open() 

     
  5.  XMLHttpRequest对象属性如下图:

七、第一个AJAX程序:用户名校验

       步骤:

  1. 编写后台控制器Servlet程序,用于对客户端请求作出响应。
  2. 编写前台html静态页面。
  3. 编写javascript脚本程序,与服务器进行交互。(AJAX编程)

             (1)创建XMLHttpRequest对象

             (2)准备好要发送的数据。

             (3)发送请求到后台servlet控制器

             (4)处理后台程序返回来的数据,使用DOM编程动态添加到页面上。

1、Servlet程序:

package cn.itcast.ajax.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AjaxServlet
 */
public class AjaxServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String username = request.getParameter("username");
		System.out.println(username);
		response.setHeader("Content-Type", "text/html; charset=UTF-8");
		if ("admin".equals(username)) {
			response.getOutputStream().write("用户名已存在".getBytes());
		} else {
			response.getOutputStream().write("用户名可以使用".getBytes());
		}
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}


 

2、html静态页面

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="ajaxhtm.js"></script>
</head>
<body>
	<form action="">
		用户名:<input type="text" id="username" name="username" /><input id="submit"
			type="button" onclick="sendDataToServerByHtml()" value="检查用户名是否已经存在" /><span></span><br /> 密码:<input
			type="password" name="userpass" />
	</form>
</body>
</html>

三、JavaScript脚本程序

/*
 * 使用ajax编程异步向服务器端发送请求的步骤:
 * 第一步:创建并初始化XMLHttpRequest对象
 * 第二步:往服务器端发送请求
 * 第三步:处理服务端返回来的数据
 */
// 初始化XMLHttpRequest对象
function createXmlHttpRequest() {
	var xmlhttp = null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlhttp = new XMLHttpRequest();
	} catch (e) {// IE7.0以下的浏览器以ActiveX组件的方式来创建XMLHttpRequest对象
		var MSXML = [ 'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0',
				'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP',
				'Microsoft.XMLHTTP' ];
		for ( var i = 0; i < MSXML.length; i++) {
			try {
				xmlhttp = new ActiveXObject(MSXML[i]);
				break;
			} catch (e) {

			}
		}
	}
	// 返回对象
	return xmlhttp;
}
// 发送请求道服务器端(使用的是html的数据格式向服务器端发送请求)
function sendDataToServerByHtml() {
	// alert("sdhfhs");
	var xhr = createXmlHttpRequest();
	var username = document.getElementById("username").value;
	// 这里使用getElementsByTagName方法得到的是该标签的一个集合数组
	var span = document.getElementsByTagName("span");
	// alert(span[0]);
	// alert(username);
	// 发送请求到服务器端
	xhr.open("get", "/ajax/AjaxServlet?username=" + username, true);
	/*
	 * 注意:send方法是在使用post方式提交的时候必须发送的消息内容,
	 * post的请求特点:请求的参数会在请求体中,因此当使用post请求提交的时候就必须使用send方法发送参数
	 * 但是,get的方法提交请求的时候,参数是在地址栏传送过去的,因此send方法可以不用夹带参数,即发送null即可
	 */
	xhr.send(null);
	// 对服务器端传递回来的信息进行处理
	xhr.onreadystatechange = function() {
		// 对象的状态 4表示完成
		if (xhr.readyState == 4) {
			// 200表示信息已经被成功返回,304表示信息没有被修改
			if (xhr.status == 200 || xhr.status == 304) {
				// 开始处理信息
				// alert(xhr.responseText);
				span[0].innerHTML = xhr.responseText;
			}
		}
	};
}

效果图如下:


如需要这个小应用的完整工程请单击下载

      这是我个人对AJAX技术的一点小总结,如果我哪些总结的地方写错了,希望大家能指出来,让我改正错误,快速成长起来!

 

FLUKA软件在Ubuntu的安装指南(亲测有效) FLUKA其强大的蒙特卡洛模拟能力使得用户能够模拟复杂的辐射相互作用过程 阅读详情

相关推荐

MS2107 CVBS转USB2.0 音视频采集芯片,支持1080P@30HZ输出

MS2107 是一款视频和音频采集芯片,支持CVBS转USB2.0 ;可以将 CVBS、S-Video 和音频信号通过 USB接口传送到 PC、智能手机和平板电脑上预览或采集。

TEL18967112838的博客 2075

Extjs的ajax实现

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose...

weixin_30906671的博客 96

docker安装fastdfs+nginx配置

docker安装fastdfs+nginx,实现图片或文件的上传与下载

weixin_47325126的博客 2193

ExtJs中的Ajax详解

概述:Ext.Ajax是Ext.data.Connection的一个子类,提供了简单的方式进行Ajax的功能实现 一、主要方法        abort终止一个没有完成Ajax请求        isLoading:判断指定的Ajax请求是不是正在运行        paresStatus:返回请求响应的代码        request:发送服务器请求---->重点

Java方向程序员_张帅鹏 2725

手把手教你用FPGA实现SerDes高速接口设计(附避坑指南)

本文是一份详尽的FPGA SerDes高速接口设计实战指南。文章深入剖析了SerDes硬核(如GTX/GTH)的时钟管理、发送端均衡、接收端CDR与均衡等核心模块,并提供了Verilog代码示例。重点分享了信号完整性分析、眼图调试与误码率测试等实战经验,附有自定义高速视频流接口的完整实现案例与避坑指南,帮助工程师从“会用”到“懂”且能独立驾驭高速接口设计。

ik678901234的博客 1146

【Windows Server 2019】企业虚拟专用网络服务的配置和管理(上)

博文介绍了部署企业虚拟专用网的定义,目的,以及好处。同时说明了实验拓扑图以及虚拟专用网络的工作原理。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 1万+

ext的ajax写法,ExtJs的Ajax示例

ExtJs对于Ajax的使用非常简单,看下面的代码:1.Html页:htmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">Ext.onReady(function(){varfnAjaxDemo=function()...

weixin_39922929的博客 370

【通信原理】基于【MATLAB】的通信OFDM系统仿真

主要进行OFDM系统的仿真,使用MATLAB软件对OFDM系统的接收端和发射端分别进行模拟仿真。

ALi.S的博客 5792

【ExtJs】ExtJs的Ajax

这东西非常简单,只要你会用aspx,jsp,php等任意一种服务器语言或者框架,知道怎么获取页面传递参数就行了。 ExtJs的Ajax甚至比Jquery的还要简短。 一、基本目标 就比如如下图的一个极其简单的例子,Ajax.html有一个按钮,一点击,传递a=10与b=20这两个值去Helloworld.jsp或者Helloworld.php,然后Helloworld.jsp或者He

编程记录,亲测有效 6538

手把手教你学PCIE--固件与BIOS配置 - BIOS设置对PCIe性能的影响

本文详细分析了BIOS设置对PCIe性能的影响,并提供了优化建议。通过合理调整链路参数、功耗管理策略和高级功能配置,可以显著提升系统的性能和稳定性。本文将进一步分析BIOS设置如何影响PCIe设备的性能,并提供优化建议。BIOS(或UEFI)是系统启动时的第一个控制层,其设置直接决定了PCIe设备的工作状态和性能表现。BIOS中的功耗管理选项(如C-States、P-States)会影响PCIe链路的低功耗模式(L0s/L1)。MSI/MSI-X中断具有更高的性能和更好的可扩展性,应作为首选方案。

MHD0815的博客 995

【以太网硬件一】802.3xx标准怎么这么多?它们有什么关系?

IEEE 802.3标准发展历史简介

highman110的博客 5017

ext创建ajax,Ext.Ajax 对ajax的支持

介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事件操作封装,还有扩展的常用函数等。Ajax服务端交互式操作是提交到.NET MVC。后续服务端交互都采用这一方式实现。一、ExtJs中的Ajax:Ext.Ajax.request通过客户端向服务端发送Ajax请求,可以“直接”调用MVC的action方法,并传递参数,action返回值可以是普通字符串,也可以是json对象。...

weixin_32120857的博客 466

【异常】Codybuddy Error Code: 14003 too many requests 限流报错问题排查与解决指南

14003报错本质为服务端限流拦截,并非账号封禁或程序致命故障,90%以上的场景可通过等待冷却+规范使用行为解决。通过本文的排查步骤,可快速恢复工具使用,同时规避后续重复触发该问题。

奶爸的编程之路,也就一周冷个三天 1253

Extjs用ajax提交表单四种方式

/**   *    * 第一种Ajax提交方式   *    *    * 这种方式需要直接使用ext Ajax方法进行提交   *    *    * 使用这种方式,需要将待传递的参数进行封装   *    *    * @return   */   function saveUser_ajaxSubmit1() {       Ext.Ajax.request(

Lee_guang的专栏 8726

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

EXTJS AJAX 解析 XML 数据

EXTJS  AJAX 从后台取 XML  数据 在页面上展示  页面JS function getAllAreaInfos() { var areaName = ""; Ext.Ajax.request({ method: 'POST', url: 'allAreaInfos', params: {"areaName":are

getdate的专栏 3337

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ExtJS——AJAX请求数据

index.html Ext.onReady(function(){ var panel = new Ext.Panel({ //没有show方法,调用报错显示innerHTML为空 title:'AJAX数据', width:200, height:400, fra

u013127751的博客 2053

EXTJS 中Ajax 应用示例

简单的Ext.Ajax. request示例 var requestConfig = { url :loginServer.jsp,//请求的服务器地址 params : {userName : tom,password : 123},//请求参数 customer : 自定义属性,//附加属性 callback : function(options,s

软践的专栏 5648

转:华丽的化生——ExtJS——Ajax开发者不得不用的Ajax框架

华丽的化生——ExtJS——Ajax开发者不得不用的Ajax框架 自Ajax之父Jesse James Garrett于2005年提出这一新概念之后,这一沉睡了多年的技术,换上新衣,一下子变得容光焕发。经过将近3年的发展,Ajax技术在国际社区内取得了很大的发展,已经比较成熟。Ajax发展至今,各种关于Ajax的框架层出不穷,但是从社区的情况来看,从来没有哪一种框架像ExtJS一样...

ankan8592的博客 170

extjs ajax 中文乱码,Extjs Ajax 乱码问题解决方案

Extjs Ajax 乱码问题解决方案更新时间:2009年04月15日 22:11:47 作者:在Ext的使用过程中,一不留心就出现了乱码,包括在客户端提交给服务器的数据中出现了乱码和服务器端返回给客户端的数据中出现了乱码,下面简单分析一下出现乱码的原因。在一次页面浏览过程中,客户端对一个URL发起浏览请求,服务端针对这次请求进行解析,而在字符编码解析方面,首先他检查该页面中的字符编码设置,即...

weixin_42514521的博客 296

extjs ajax 遮罩层,一款很好用的ajax框架 ExtJS

一、概述:ExtJS是一个很不错的Ajax框架,可以用来开发带有华丽外观的富客户端应用,使得我们的b/s应用更加具有活力及生命力。ExtJS是一个用javascript编写,与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。要使用ExtJS,那么首先要得到ExtJS库文件,该框架是一个开源的,可以直接从官方网站下载。二、使用extjs...

weixin_39590566的博客 303

JS 、ExtJS、 Jquery、 Ajax

JavaScript是一种动态弱类型的脚本语言,用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。 jQuery和EXTJS是库的名称。什么是库?就是说别人把javascript原有的方法通过组合和包装,让使用者能够更好的使用。举例来说,javascript就像是原料,比如说金属和塑料。我们可以把金属和塑料按照不同需求造成钳子和螺丝刀等不同的工具,来让我们更好的完成工作。库就像是

u013223565的专栏 594

ExtJs ajax调用汇总

//异步ajax调用 /** * 异步调用ajax,成功后返回值,作为回调函数的参数 调用失败会提示 * * @param {} * urlStr * @param {} * paramsObj * @param {} * callbackFunc */ function ajaxCall(...

Done 196

extjs学习08——extjs的ajax初步简介

extjs学习08——extjs的ajax初步简介 学习自dojo china陈治文老师的extjs视频教程 本篇日志是对视频章节的小结 /**Ext.Ajax singleton Ext.data.Connection的一个单例。该类是用来和你的服务端代码进行交互的。它的用法如下: Ext.Ajax.request({ url: 'page.php', params: {

好记性不如烂笔头 630

EXTJS的工作总结

<br />工作总结<br />   ExtJS是什么?在我进了公司之后我才开始听到这个名词,之前只是听说过JQuery,还没用过,甚至之前也只是偶尔修改下javascript,真正使用javascript还未曾试过。接触EXTJS后,我也开始对javascript慢慢地了解更多一些了。EXTJS给了我一种新的编程乐趣和编程方式,让我抛开了写HTML代码的界面,让我可以快速地布局出自己想要而且体验不错的界面!<br />什么是EXT<br />1、ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一

SOHO SOFTWARE 2531

ExtJS4 ajax请求同步异步问题

今天在写代码过程中遇到一个奇怪的问题,事情是这样的,我写了一个简单的页面用来删除选中的用户,请看下面: 因为后台的servlet的代码实现了根据用户名来删除一条记录,所以我在前台的ExtJS代码里面用了循环: function deleteUsers(userList) {//删除用户 var msgTip = Ext.MessageBox.show({//显示正常删除的信息提示框

hu8471479的专栏 4306
上一篇: 各类IT编程视频教程下载网址大全
下一篇: ExtJS(三)--Ajax实现省份城市联动
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Seven的代码实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值