Ajax异步提交

通过GET方式向`/check_username.do`发出请求,带`username=?`参数,希望服务器响应`0`(用户名不存在)或`1`(用户名存在)。
## 核心代码
对响应`/check_username.do`的方法添加`@ResponseBody`注解,在方法中,根据查询结果返回字符串格式的0或1即可。
当添加了`@ResponseBody`注解后,返回的字符串将不再是由`ViewResolver`的前缀和后缀拼接出JSP页面,而是将返回的字符串直接响应给客户端!
## 注解驱动
当需要使用`@ResponseBody`时,必须在Spring的配置文件中添加注解驱动:
	<mvc:annotation-driven />

 

严格的说,AJAX并不算一门语言,只能算一门学科或技术的应用方式,本质上还是JavaScript编程。
## 如何使用
首先,需要获取XMLHttpRequest对象:
	var xhr;
	xhr = new XMLHttpRequest();
XMLHttpRequest对象有5个核心属性:
- onreadystatechange:当准备状态发生变化
- readyState:准备状态,该属性的值可能是0~4之间的数字,0表示尚未建立连接,4表示接收到响应
- status:响应码,例如404、200
- responseText:响应的字符串
- responseXML:响应的XML
当需要发出请求时,需要使用2个函数:
- open(请求方式, 请求路径, 是否异步)
- send()

使用演示:
	// 异步检查用户名是否存在
	function checkUsername(username) {
		// 获取XMLHttpRequest对象
		var xhr = new XMLHttpRequest();
		var url = "check_username.do?username="
				+ username;		
		// 配置onreadystatechange
		xhr.onreadystatechange = function() {
			// 当服务器已经响应(4)且响应码是200时
			if (xhr.readyState == 4
					&& xhr.status == 200) {
				// 服务器的响应将是"0"或"1"
				if (xhr.responseText == "1") {
					// 表示用户名存在
					document.getElementById("username_hint").innerHTML= "用户名正确";
				} else {
					// 表示用户名不存在
					document.getElementById("username_hint").innerHTML = "用户名不存在";
				}
			}
		};
		// 调用函数
		xhr.open("GET", url, true);
		xhr.send();
	}

了解过程后,我们可以使用Ajax简洁的方式:

$.ajax({

    "url":"${pageContext.request.contextPath}/user/compare.do",

    "data":"username="+$("#username").val(),

    "type":"post",

    "dataType":"json",

    "success":function(obj){

        //执行成功怎么办

    },

    "error":function(obj){

        //执行失败怎么办

    }

});

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值