Ajax和JqueryAjax

Ajax
一、Ajax请求
1.异步无刷新技术
实现流程:
同步:
1)、得到核心对象XMLHttpRequest对象
var xhr = new XMLHttpRequest();
console.log(xhr);

  2)、准备/打开请求
     open(请求类型GET/POST,请求的路径,是否异步true/false);

xhr.open(“GET”,“js/data.json?uname=zhangsan&uage=10”,false); // 同步请求

  3)、发送请求
     send(参数/null);
     xhr.send(null);
     注:如果是get请求,参数直接跟在请求路径后面,      	send()方法中设置null;
     如果是post请求,有参数则设置参数,无参数设置为null;
     4)、解析响应数据
     1>、判断响应是否成功 status=200 (404=未找到资源;500=服务器异常;200=成功)
  if (xhr.status == 200) { // 1、判断响应是否成功 status=200
     2>、得到后台响应数据  responseText
      console.log(xhr.responseText);
       var user = JSON.parse(xhr.responseText);
       console.log(user);
       console.log(user.uname);
       } else {
       alert("失败状态码:" + xhr.status + ",失败原因:" + xhr.statusText);
        }

2.异步
1)、得到核心对象XMLHttpRequest对象
var xhr = new XMLHttpRequest();
console.log(xhr);

  2)、准备/打开请求
     open(请求类型GET/POST,请求的路径,是否异步true/false);

xhr.open(“GET”,“js/data.json?uname=zhangsan&uage=10”,false); // 同步请求

  3)、发送请求
     send(参数/null);
     xhr.send(null);

注:如果是get请求,参数直接跟在请求路径后面,send()方法中设置null;
如果是post请求,有参数则设置参数,无参数设置为null;

// 监听readystate事件 (0=尚未调用open方法;1=已调用open方法未调用send方法,2=调用send方法,未接收到响应;3=接收到部分响应;4=响应完全接收)
xhr.onreadystatechange = function() {
// 如果是异步请求,需要等待数据完全响应后再做处理
if (xhr.readyState == 4) {
4)、解析响应数据
1>、判断响应是否成功 status=200 (404=未找到资源;500=服务器异常;200=成功)
if (xhr.status == 200) { // 1、判断响应是否成功 status=200

     2>、得到后台响应数据  responseText
      console.log(xhr.responseText);
        var user = JSON.parse(xhr.responseText);
        console.log(user);
        console.log(user.uname);
         } else {
         alert("失败状态码:" + xhr.status + ",失败原因:" + xhr.statusText);
        }
}
}

3.post请求
实现流程:
异步:
1)得到核心对象XMLHttpRequest对象
var xhr = new XMLHttpRequest();
console.log(xhr);
2)准备/打开请求
open(请求类型GET/POST,请求的路径,是否异步true/false);
xhr.open(“POST”,“js/data.json”,true); // 异步请求
// 由于Post请求的机制问题,需要模拟表单提交 xhr.setRequestHeader(‘Content-Type’,‘application/x-www-form-urlencoded’);
3)发送请求
send(参数/null);
注:如果是get请求,参数直接跟在请求路径后面,send()方法中设置null;
果是post请求,有参数则设置参数,无参数设置为null;
xhr.send(“uname=zhangsan&uage=10”); // post请求如果有参数,需 要将参数设置在send方法中

	// 监听readystate事件 (0=尚未调用open方法;1=已调用open方法未调用			send方法,2=调用send方法,未接收到响应;3=接收到部分响应;4=响应完			全接收)
		xhr.onreadystatechange = function() {
		// 如果是异步请求,需要等待数据完全响应后再做处理
		if (xhr.readyState == 4) {

4)解析响应数据
① 判断响应是否成功 status=200 (404=未找到资源;500=服务器异常;200=成功)
if (xhr.status == 200) {
② 得到后台响应数据 responseText

console.log(xhr.responseText);
					var user = JSON.parse(xhr.responseText);
					console.log(user);
					console.log(user.uname);
				} else {
					console.log("失败状态码:" + xhr.status + ",失败原因:" 					+ xhr.statusText);
				}
			}
		}

4.ajax封装
实现流程:
1、得到核心对象XMLHttpRequest对象
var xhr = new XMLHttpRequest();
2、准备/打开请求
open(请求类型GET/POST,请求的路径,是否异步true/false);
3、发送请求
send(参数/null);
注:如果是get请求,参数直接跟在请求路径后面,send()方法中设置null;
如果是post请求,有参数则设置参数,无参数设置为null;
4、解析响应数据
1、判断响应是否成功 status=200 (404=未找到资源;500=服务器异常;200=成 功)
2、得到后台响应数据 responseText


   /*将对象格式的参数转换成等号拼接的字符串*/
   function formatParam(data) {
      // 判断参数是否存在
      if (data == null) {
         return "";
      }
      // 定义数组,接收每个参数字符串
      var params = [];
      for(var key in data) {
         /* console.log(key);
         console.log(data[key]);
         console.log(key+"="+data[key]) */
         // js中通过push()方法向数组的最后追加
         params.push(key+"="+data[key]);
      }
      console.log(params.join("&"));
      var param = params.join("&");// uname=zhangsan&uage=18     
      return param;
   }
</script>

JqueryAjax
1.jquery调用ajax方法:
格式:$.ajax({});
参数:
type:请求方式GET/POST
url:请求地址url
async:是否异步,默认是true表示异步
data:发送到服务器的数据
dataType:预期服务器返回的数据类型
contentType:设置请求头
success:请求成功时调用此函数
error:请求失败时调用此函数

<script type="text/javascript" src="js/jquery-3.3.0.min.js"></script>
<script type="text/javascript">
	$.ajax({
		type:"get", // 请求类型 GET/POST
		url:"js/data.json", // 请求路径
		dataType:"json", // 预期服务器返回的数据类型 
		data:{ // 请求参数,键值对的json对象
			
		},
		success:function(data){ // 请求成功时的回调函数
			console.log(data);
		}
	});
	
	$.ajax({
		type:"post", // 请求类型 GET/POST
		url:"js/data.json", // 请求路径
		dataType:"json", // 预期服务器返回的数据类型 
		data:{ // 请求参数,键值对的json对象
			
		},
		success:function(data){ // 请求成功时的回调函数
			console.log(data);
		}
	});

</script>

2.get()查询的时候用
1.请求json文件,忽略返回值
$.get(’…/js/cuisine_area.json’);
2.请求json文件,传递参数,忽略返回值
$.get(’…/js/cuisine_area.json’,{name:“tom”,age:100});
3.请求json文件,拿到返回值,请求成功后可拿到返回值
$.get(’…/js/cuisine_area.json’,function(data){
console.log(data)
});
4.请求json文件,传递参数,拿到返回值
$.get(’…/js/cuisine_area.json’,{name:“tom”,age:100},function(data){
console.log(data)
});

<script type="text/javascript" src="js/jquery-3.3.0.min.js"></script>
<script type="text/javascript">
	/* 无参数,无返回值 */
	// $.get("http://localhost:8080/jqueryAjax/ServletTest");
	/* 有参数,无返回值 */
	// $.get("http://localhost:8080/jqueryAjax/ServletTest",{uname:"zhangsan"});	
	/* 无参数,有返回值 */
	/* $.get("http://localhost:8080/jqueryAjax/ServletTest",function(data){
		console.log(data);
	}); */
	/* 有参数,有返回值 */
	/* $.get("http://localhost:8080/jqueryAjax/ServletTest",{uname:"zhangsan"},function(data){
		console.log(data);
	}); */
	$.get("js/data.json",{},function(data){
		console.log(data);
	});

</script>

3.post()慢 提交或登录的时候用
1.请求json文件,忽略返回值
$.get(’…/js/cuisine_area.json’);
2.请求json文件,传递参数,忽略返回值
$.get(’…/js/cuisine_area.json’,{name:“tom”,age:100});
3.请求json文件,拿到返回值,请求成功后可拿到返回值
$.get(’…/js/cuisine_area.json’,function(data){
console.log(data)
});
4.请求json文件,传递参数,拿到返回值
$.get(’…/js/cuisine_area.json’,{name:“tom”,age:100},function(data){
console.log(data)
});

<script type="text/javascript" src="js/jquery-3.3.0.min.js"></script>
<script type="text/javascript">
	/* 无参数,无返回值 */
	// $.get("http://localhost:8080/jqueryAjax/ServletTest");
	
	/* 有参数,无返回值 */
	// $.get("http://localhost:8080/jqueryAjax/ServletTest",{uname:"zhangsan"});
	
	/* 无参数,有返回值 */
	/* $.get("http://localhost:8080/jqueryAjax/ServletTest",function(data){
		console.log(data);
	}); */
	
	/* 有参数,有返回值 */
	/* $.get("http://localhost:8080/jqueryAjax/ServletTest",{uname:"zhangsan"},function(data){
		console.log(data);
	}); */
	
	
	$.get("js/data.json",{},function(data){
		console.log(data);
	});

</script>

4.getjson()自动封装

<script type="text/javascript" src="js/jquery-3.3.0.min.js"></script>
<script type="text/javascript">	
	$.getJSON("http://localhost:8080/jqueryAjax/ServletTest",{uname:"zhangsan"},function(data){
		console.log(data);
	}); 
	$.get("http://localhost:8080/jqueryAjax/ServletTest",{uname:"zhangsan"},function(data){
		console.log(data);
	}); 
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值