XMLHttpRequest()新升级版的优势

// XMLHttpRequest() 新版四大优点:

1、 可设置HTTP请求时限 / timeout属性

作用是超过时长可停止请求,返回提示给用户

  var xhr = new XMLHttpRequest()
 //超过3秒就不再请求
 xhr.timeout = 3000;
 xhr.timeout = function() {
 	alert('请求超时');
 }
 xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks')
 xhr.send();

2、 使用FormData对像管理表单数据

为方便表单处理 H5新增的功能,

模拟表单操作

  var fd = new FormData()
   fd.append('name', 'zs')
   fd.append('upwd', '123468')

   var xfd = new XMLHttpRequest()
   xfd.open('post', 'http://www.liulongbin.top:3006/api/formdata')
   xfd.send(fd);

  xfd.onreadystatechange = function() {
  	if (xfd.readyState === 4 && xfd.status === 200) {
  		console.log(JSON.parse(xfd.responseText));
  	}
  };
 //FormData对像 快速获取网页表单的值 

form的表单而布局

<form action="" id="form1">
 <input type="text" name="username" autocomplete="off" value="">
 <input type="password" name="upwd">
 <button type="submit">提交</button>
</form>

快速获取网页全部表单值 提交

 var form = document.querySelector('#form1')
 form.addEventListener('submit', function(e) {
 	e.preventDefault()
    //获取form的值
 	var fd = new FormData(form)
 	//创建新XHR请求
 	var xfd = new XMLHttpRequest()
 	xfd.open('post', 'http://www.liulongbin.top:3006/api/formdata')
 	xfd.send(fd);

 	xfd.onreadystatechange = function() {
 		if (xfd.readyState === 4 && xfd.status === 200) {
 			console.log(JSON.parse(xfd.responseText));
 		}
 	};
 })

3、 可以上传文件

上传文件 html布局

 <!-- 上传文件 -->
<input type="file" name="username" autocomplete="off" id="file1">
<button type="submit" id="butn">上传文件</button>
<!-- 上传成功的图 -->
<img src="" alt="">

上传文件js代码

// 先验证用户是否选择文件上传
var butn = document.querySelector('#butn')
butn.addEventListener('click', function() {
	var files = document.querySelector('#file1').files;
	if (files.length <= 0) {
		return alert('请选择上传文件')
	}
	// 将用户选择的文件添加到 FormData()
	var fd = new FormData();
	fd.append('avatar', files[0]);
	
	//创建新的xhr请求
	var xfd = new XMLHttpRequest();
	xfd.open('POST', 'http://www.liulongbin.top:3006/api/upload/avatar')
	xfd.send(fd);
	//监听xfd.onreadystatechange事件
	xfd.onreadystatechange = function() {
		if (xfd.readyState === 4 && xfd.status === 200) {
			var data = JSON.parse(xfd.responseText);
			console.log(data);
			//如果  data的satus等200 那表示 上传成功 了
			if (data.status === 200) {
			//便把地址赋值给图片的SRC
				document.querySelector('img').src = 'http://www.liulongbin.top:3006' + data.url
			} else {
				alert('上传文件失败')
			}
		}
	};
})

4、 可以获得数据传输进度信息

需要引入的文件
引用了bootstrap的进度条布局及样式
进度条的样式变化是用jQuery写的,所以也引进了 jquery.min.js


<link rel="stylesheet" href="css/bootstrap.min.css">
<script src="js/jquery.min.js"></script>

<div class="progress" style="width:  300px">
<div class="progress-bar progress-bar-danger progress-bar-striped active" style="width: 0%" id="jdt"> 0%</div>
	//监听文件上传的进度
	// onprogress 事件在浏览器上传下载时触发。
	xfd.upload.onprogress = function(e) {
		// lengthComputable 是一个布尔值 表当前上传的资源 是否具胡可计算的长度
		if (e.lengthComputable) {
			//计算上传的进度  e.loaded 已传的字节     e.total  总需传的字节
			// Math.ceill向上取整
			var pC = Math.ceil((e.loaded / e.total) * 100);
			console.log(pC)
			$('#jdt').attr('style', 'width:' + pC + '%;').html(pC + '%')
		}
	}
      //监听xfd的上传进度是否完成
	xfd.upload.onload = function() {
	//完成后 便给  进度条,移除所有的样式   再新增绿色的样式
		$('#jdt').removeClass().addClass('progress-bar progress-bar-success');
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值