【javaweb简单教程】11.Ajax与jQuery超简单教程(含小例子代码)

11.Ajax与jQuery

Ajax简介

  • Ajax:异步刷新技术

传统Web与Ajax的差异

差异方式说 明
发送请求方式不同传统Web浏览器发送同步请求
Ajax技术异步引擎对象发送请求
服务器响应不同传统Web响应内容是一个完整页面
Ajax技术响应内容只是需要的数据
客户端处理方式不同传统Web需等待服务器响应完成并重新加载整个页面后用户才能进行操作
Ajax技术可以动态更新页面中的部分内容 不影响用户在页面进行其他操作

XMLHttpRequest

  • 整个Ajax技术的核心
  • 提供异步发送请求的能力
  • 常用方法
方 法说 明
open( String method, String url, boolean async, String user, String password )创建一个新的HTTP请求
send( String data )发送请求到服务器端
abort( )取消当前请求
setRequestHeader( String header, String value )设置请求的某个HTTP头信息
getResponseHeader( String header )获取响应的指定HTTP头信息
getAllResponseHeader( )获取响应的所有HTTP头信息
  • 事件
    • onreadystatechange:指定回调函数
  • 常用属性
    • readyState:XMLHttpRequest的状态信息
就绪状态码说 明
0XMLHttpRequest对象未完成初始化
1XMLHttpRequest对象开始发送请求
2XMLHttpRequest对象的请求发送完成
3XMLHttpRequest对象开始读取响应
4XMLHttpRequest对象读取响应结束
  • 常用属性(续)

    • status:HTTP的状态码
    状态码说 明
    200服务器正确返回响应
    404请求的资源不存在
    500服务器内部错误
    403没有访问权限
    ……

    注:就绪状态是4且状态码是200,表示正确完成

    • statusText:返回当前请求的响应状态
    • responseText:以文本形式获得响应的内容
    • responseXML:将XML格式的响应内容解析成DOM对象

$.ajax()简介

$.ajax( [settings] );
  • 常用属性参数
参 数类 型说 明
urlString发送请求的地址,默认为当前页地址
typeString请求方式,默认为GET
dataPlainObject或 String或Array发送到服务器的数据
dataTypeString预期服务器返回的数据类型,包括:XML、HTML、Script、JSON、JSONP、text
timeoutNumber设置请求超时时间
globalBoolean表示是否触发全局Ajax事件,默认为true
  • 常用函数参数
参 数类 型说 明
beforeSendFunction ( jqXHR jqxhr, PlainObject settings )发送请求前调用的函数
successFunction( 任意类型 result, String textStatus, jqXHR jqxhr )请求成功后调用的函数 参数result:可选,由服务器返回的数据
errorFunction ( jqXHR jqxhr, String textStatus, String errorThrown )请求失败时调用的函数
completeFunction ( jqXHR jqxhr, String textStatus )请求完成后(无论成功还是失败)调用的函数
  • 示例
$.ajax( {
     "url"     	:  "url",                      // 要提交的URL路径
     "type"     :  "get",                     // 发送请求的方式
     "data"     :  data,                      // 要发送到服务器的数据
     "dataType" :  "text",                   // 指定传输的数据格式
     "success"  :  function(result) {       // 请求成功后要执行的代码
	     },
      "error"       :  function() {           // 请求失败后要执行的代码
	     }
} );
小例子:ajax的简单登录请求(不登录验证,只用来理解ajax简单请求原理)

首先引入jQuery.js

登录页面:login.jsp

<body>
	账号:<input id="username" name="username" type="text"/><br/>
	密码:<input id="userpwd" name="userpwd" type="text"/><br/>
	<button id="sub_btn">提交</button>
</body>

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
	$(function(){
		$("#sub_btn").click(function() {
			var username = $("#username").val();
			var userpwd = $("#userpwd").val();
			
			$.ajax({
				url:"/web10/LoginServlet",
				data:{username:username,userpwd:userpwd},	/* 这里的username和userpwd为键值对,键和上面定义的变量没任何关系,值才有关系 */
				dataType:"text",
				type:"post",
				success:function(res) {
					alert("请求成功!!!" + res);
					location="index.jsp";
			 	}			
			});  
		});
	});
</script>

跳转成功后的页面:index.jsp

<body>
	我是主页。(随便写点啥)
</body>

用于响应ajax请求的Servlet:LoginServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//post响应ajax请求时防止乱码
		response.setCharacterEncoding("UTF-8");
		
		String username = request.getParameter("username");
		String userpwd = request.getParameter("userpwd");
		System.out.println("用户名:" + username);
		System.out.println("密码:" + userpwd);
		
    	//因为doGet()方法是void返回值,所以无法return,但可直接输出就相当于return值
		PrintWriter out = response.getWriter();
		out.print("张三");	//返回个张三,即ajax请求中接收的参数res
	}

JSON

  • JSON(JavaScript Object Notation)
    • 一种轻量级的数据交换格式
    • 采用独立于语言的文本格式
    • 通常用于在客户端和服务器之间传递数据
  • JSON的优点
    • 轻量级交互语言
    • 结构简单
    • 易于解析

定义JSON

  • 定义JSON对象
//语法
var JSON对象 = { "name" : value,  "name" : value,  …… };

//示例
var person = { "name" : "张三",   "age" : 30,  "spouse" : null };
  • 定义JSON数组
//语法
var JSON数组 = [ value,  value,  …… ];

//示例
var countryArray = [ "中国",  "美国",  "俄罗斯" ];
var personArray = [ { "name":"张三",  "age":30 },
                                  { "name":"李四",  "age":40 } ];

GET请求和POST请求的区别

步 骤请求方式实 现 代 码
初始化组件GETxmlHttpRequest.open( “GET”, url, true );
POSTxmlHttpRequest.open( “POST”, url, true ); xmlHttpRequest .setRequestHeader( “Content-Type”, “application/x-www-form-urlencoded” );
发送请求GETxmlHttpRequest.send( null );
POSTxmlHttpRequest.send( “key=xxx&type=12&year=2016” );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tuerlechat,

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

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

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

打赏作者

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

抵扣说明:

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

余额充值