ajxa(原生方式和jquery方式实现)


前言

ajxa是前后台交互的能力,也就是我们客户端给服务端发送消息的⼯具,以及接受响应的⼯具。在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页。


一、原生方式ajxa的使用

一般步骤如下:

  1. 为标签绑定事件
  2. 创建XMLRequest对象
  3. 为XMLRequest对象绑定onreadystatechange函数
  4. 当readystate值为4且http状态码为200~299之间则可以执行回调函数
  5. 使用open函数配置请求信息
  6. 使用send函数发送请求

注: 当使用post请求时,还要设置请求头中的 content- type属性,
ajxa.setRequestHeader(‘content-type’, ‘application/x-www-form- urlencoded’)

在 javascript 中有内置的构造函数,可以创建 ajax 对象,通过ajxa对象,我们可以向服务器发送请求,并获得相应,得到数据,渲染部分页面。这依赖于XMLHTTPRequest对象。

XMLHTTPRequest方法

(1)创建一个ajxa对象

const ajxa = new XMLHttpRequest()

(2)使用XMLHttpRequest对象

XMLHttpRequest对象方法

get请求:

    const ajxa = new XMLHttpRequest()
	ajxa.onreadyStateChange = function () {
	// 每次 readyState 改变的时候都会触发该事件
	// 判断 readyState 的值是不是到4并且http的状态码是不是 200 ~ 299
	if (ajxa.readyState === 4 && /^2\d{2}$/.test(ajxa.status)) {
	// 当验证通过就可以获取服务端给我们响应的内容了
      	var a=document.querySelector('.mydiv')
      	//responseText中存储的是我们的响应体的内容
        a.innerHTML=myd.responseText 
	}
}
	//这里最好使用项目的绝对路径,如果使用相对路径,要带上项目名
	//这里true表示异步请求
	ajxa.open('get', '/test?username=zhangsan&password=123456',true)
	ajxa.send()

post请求:

    const ajxa = new XMLHttpRequest()
	ajxa.onreadyStateChange = function () {
	// 每次 readyState 改变的时候都会触发该事件
	// 判断 readyState 的值是不是到4并且http的状态码是不是 200 ~ 299
	if (ajxa.readyState === 4 && /^2\d{2}$/.test(ajxa.status)) {
	// 当验证通过就可以获取服务端给我们响应的内容了 
		var a=document.querySelector('.mydiv')
      	//responseText中存储的是我们的响应体的内容
        a.innerHTML=myd.responseText 
	}
}
	//这里最好使用项目的绝对路径,如果使用相对路径,要带上项目名
	ajxa.open('post', '/test',true)
	//设置请求头信息
	ajxa.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	//这里只需要将参数写在send函数里面
	ajxa.send('username=zhangsan&password=123456')

二、Jquery方式ajxa的使用

(1)引入jquery库

  1. 官网下载:jquery-3.7.0.min.js
  2. 将jquery放在项目文件web下的lib路径下管理

jquery

  1. 在项目html文件中引入jquery
<script src="/ajax/lib/jquery-3.7.0.min.js"></script>

(2)在项目中使用ajxa请求

get请求

  $(function () {
      $("#but").click(function () {
          $.ajax({
          		 url: "/ajax/myA", 
          		 type : "get",
          		 //指定post请求从后端后端返回的字符串
          		 //尝试通过JSON.parse()尝试解析为js对象
          		 dataType: 'json',
          		 data : {username : "recipient", password : "password"},
          		 success:function (json) {
              		$("#in").val(json.uname)
          		}
          		 error: function (msg) {
						alert(msg);
					}
          		})
     	 })
  })

post请求

  $(function () {
      $("#but").click(function () {
          $.ajax({
          		 url: "/ajax/myA", 
          		 //指定post请求从后端后端返回的字符串
          		 //尝试通过JSON.parse()尝试解析为js对象
          		 dataType: 'json',
          		 type : "post",
          		 data : {username : "recipient", password : "password"},
          		 success:function (json) {
              		$("#in").val(json.uname)
          		}
          		 error: function (msg) {
						alert(msg);
					}
          		})
     	 })
  })

总结

关于ajxa还有一些问题没有提到,比如跨越问题,这需要大家自己去学习了,还有jsonfast还是先用1.2.6的,2.0版本的有一些问题,就是这么多,谢谢大家。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Gunalaer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值