JavaScript-原生Ajax

        在前端开发中,在传统的网络请求方式是form表单,通过submit事件实现数据加载,但由于form表单请求方式是采用的同步响应模式,即:一次HTTP请求对应一个新的页面,每次请求都会丢弃当前页面来重新加载新页面;这导致频繁的页面刷新让客户处于一种不连续的状态,也使服务器的负担加重。为了实现局部数据加载,引入了Ajax技术,即异步 JavaScript和XML。今天我们来了解一下Ajax的Get和POST请求。

Get和POST的区别

1.get传送数据较小,不能大于2KB。post数据量较大,一般被默认为不受大小限制。但理论上,HS4中最大量为80KB,HS5最大为100KB。

2.post请求必须设置Content-Type值为application/x-form-www-urlencoded

3.发送请求时,因为get请求的参数都在url里(这也导致get安全性低),所以send函数发送的参数为null,而post请求在使用send方法时,却需赋予其参数

4.性能方面get请求优于post


Ajax实现原理

        Ajax的原理简单来说通过浏览器的javascript对象XMLHttpRequest(Ajax引擎)对象向服务器发送异步请求并接收服务器的响应数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。即用户的请求间接通过Ajax引擎发出而不是通过浏览器直接发出,同时Ajax引擎也接收服务器返回响应的数据,所以不会导致浏览器上的页面全部刷新。如图

图片

Ajax实现代码

Ajax执行步骤:

1、创建XMLHttpRequest对象

2、使用open方法设置和服务器的交互信息

3、通过XMLHttprequest向服务器发送请求

4、创建回调函数,监视服务器的响应状态,即:在服务器响应完成之后,回调函数启动!

5、页面的更新---回调函数通过DOM动态的更新HTML(JSP)页面。

原生Ajax-get请求


//步骤一:创建异步对象
var ajax = newXMLHttpRequest();
//步骤二:设置请求的信息
//open三个参数说明:
//1--提交请求的方式(字符串)
//2--发送请求的目标url(处理请求的后台),请求的参数在url后加?链接
//3--是否异步请求---true表示是异步请求,默认值true
ajax.open('get','getStar.php?starName='+name,true);
//步骤三:发送请求,不需要传参
ajax.send();
//步骤四:注册事件 onreadystatechange 状态改变就会调用
ajax.onreadystatechange= function () {
//服务器的状态----readyState
//(0--请求对象未初始化、1--开始发送不请求、2--请求发送完成、3--读取服务器的响应、4--读取服务器响应结束)
//服务器响应返回的状态码---status
//200--ok、404--未找到页面、304--缓存、403--没有权限、500--服务器级别错误
   if (ajax.readyState==4&&ajax.status==200) {
    //步骤五 如果能够进到这个判断 说明 数据 完美的回来了,并且请求的页面是存在的
    console.log(ajax.responseText);//输入相应的内容
    }
}

原生Ajax-post请求

//创建异步对象 
var xhr = newXMLHttpRequest();
//设置请求的类型及url
//post请求一定要添加请求头才行不然会报错
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//post请求和get不同的是url后面不带数据参数
xhr.open('post', '02.post.php' ,true);
//发送请求,需要传参
xhr.send('name=fox&age=18');
xhr.onreadystatechange= function () {
    // 这步为判断服务器是否正确响应
  if (xhr.readyState == 4 && xhr.status== 200) {
    console.log(xhr.responseText);
  }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值