Ajax笔记

Ajax笔记

原生AJAX

创建XMLHttpRequest对象

var xhr = new XMLHttpRequest();

老版本IE5和IE6使用ActiveX对象

var axo = new ActiveXObject("Microsoft.XMLHTTP");

向服务器发送请求

xhr.open("GET","/test.action",true);
xhr.send();
方法描述
open(method,url,async)规定请求的类型、URL以及是否异步处理
send(string)将请求发送到服务器
  • method:请求的类型;GET或POST
  • url:文件在服务器上的位置
  • async:true(异步)或false(同步)
  • string:仅限于POST请求
    • post请求无法缓存文件,
    • 数据量无限制
    • 安全

服务器响应

属性描述
responseText获得字符串的响应数据
responseXML获取XML形式的响应数据

onreadystatechange事件

每当readyState改变时,就会触发onreadystatechange事件

属性描述
onreadystatechange存储函数(或函数名),每当readyState属性改变时,就会调用该函数。
readyState存有XMLHttpRequest的状态。从0到4发生变化
status200:“ok” 404:未找到页面
  • 0:请求未初始化
  • 1:服务器连接已建立
  • 2:请求已接收
  • 3:请求处理中
  • 4:请求已完成,且响应已就绪

JQueryAJAX

$.get&$.post

$.get(url,[data],[callback],[type])
$.post(url,[data],[callback],[type])
  • url:待载入页面的URL地址
  • data:待发送Key/value参数
  • callback:载入成功时回调函数
  • type:返回内容格式,xml,html,script,json,text,_default
				$.get(
    				"${pageContext.request.contextPath}/user/loginCheckname.action",
    				"name="+this.value,
    				function(message){
    					if(message.success === false){
    						$("span").text("用户不存在");
    					}else{
    						alert(message.success);
    						$("span").text("");
    					}
    				},
    				"json"
				);

post或者get发送的数据只能是以下两种类型不能是json字符串:

  • 序列化格式:k=v&k=v&k=v
  • json对象:{“k”:v,“k”:v}

在Controller层接收数据的时候只需要使用model类进行接收
返回内容格式为json格式时需要在Controller方法中返回值model类中添加@ResponseBody注解,解析model类为json对象

@RequestMapping("/loginCheckname.action")
	@ResponseBody
	public Message login(User u){
		Message message = new Message();
		message.setSuccess(us.checkName(u) == null ? false : true);
		return message;
	}

$.ajax

该方式支持get提交以及post提交并且可以提交json字符串,且在发送json字符串时必须添加键contentType:“application/json;chartset=utf-8”,
提交数据为json字符串的时必须在Controller层相应方法中的参数添加@RequestBody注解

jsp中js

$.ajax({
    				data:'{"name":'+this.value+'}',
    				dataType:"json",
    				contentType:"application/json;chartset=utf-8",
    				success:function(message){
    					if(message.success === false){
    						$("span").text("用户不存在");
    					}else{
    						$("span").text("");
    					}
    				},
    				type:"post",
    				url:"${pageContext.request.contextPath}/user/loginCheckname.action"
    			});

Controller层java文件

@RequestMapping("/loginCheckname.action")
	@ResponseBody
	public Message login(@RequestBody User u){
		Message message = new Message();
		message.setSuccess(us.checkName(u) == null ? false : true);
		return message;
	}

使用Ajax时Controller中的方法不能进行重定向或者内部转发,在返回数据的时候必须添加@ResponseBody注解

转载于:https://www.cnblogs.com/forwards/p/7441211.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值