ajax-属性、原理、实现html5进度条上传文件
一、远古ajax实现方式如下:
1、前端请求后台,后台设置返回 http状态码204
2、运用img图片(或css/javascript等)的加载机制,请求后台
3、post提交数据,运用iframe标签,能post提交,且页面不刷新
二、现代ajax(运用XMLHttpRequest):
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
//创建http请求
function createHttp(){
var xml = null;
if(window.XMLHttpRequest){
xml = new XMLHttpRequest(); //现在主流浏览器,包括IE7和以上版本
}else if(window.ActiveXObject){
xml = new ActiceXObject('Microsoft.XMLHTTP'); //兼容IE6的浏览器
}
return xml;
} //构造发送请求
function httpStart(){
var xml = createHttp(); //创建http对象
xml.open('GET','./2020-02-22.php',true); //第一个参数:设置请求方式, 第二个参数:设设置请求 第三个参数:设置同步还是异步
xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8'); //设置为post请求, 必须在open() 之后、send() 之前调用setRequestHeader
xml.send(null); //设置请求发送的数据,数据的格式:像get传参 key1=value1&key2=value2
xml.onreadystatechange = function(){ //请求的状态每次变化都会触发这个函数
var state = this.readyState; //请求的状态值0-1-2-3-4 5个代表值,其中4代表成功
if(state == 4){
console.log('请求状态码:'+state)
var text = this.responseText; //获取返回的主体信息
console.log('返回主体:'+text)
var response = this.response;
console.log('返回信息:'+response)
var responseType = this.responseType;
console.log('返回数据类型:'+responseType)
var status = this.status;
console.log('返回的状态码:'+status)
var statusText = this.statusText;
console.log('返回的状态信息:'+statusText)
var responseXML = this.responseXML;
console.log('返回的xml信息:'+responseXML) //返回xml类型对象
var getResponseHeader = this.getResponseHeader('Content-length'); //http返回的属性名
console.log('返回请求的数据长度:'+getResponseHeader)
var getAllResponseHeaders = this.getAllResponseHeaders();
console.log('返回请求的全部信息:'+getAllResponseHeaders)
}
}
}
</script>
</head>
<body>
<button onclick="httpStart()">点击我</button>
</body>
</html>
三、HTML5简单带进度条的文件上传
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<script type="text/javascript">
function selfile(){
var div2 = document.getElementById('div2');
var file = document.getElementById('file').files[0];//html5新属性,获取上传文件对象
var fm = new FormData(); //html5新属性,创建表单对象
fm.append('file',file);
var xml = new XMLHttpRequest(); //创建请求
xml.open('POST','dfadf.php',true);
xml.upload.onprogress = function (ev){//绑定上传的文件的监听事件
if(ev.lengthComputable){//开始上传的标志
var progress = 100*ev.loaded/ev.total;//上传文件的大小/文件总大小
div2.style.width = progress + '%';
div2.innerHTML = parseInt(progress) + '%';
}
}
xml.send(fm);
}
</script>
<style type="text/css">
#div1{
width:500px;
height:30px;
border: 1px solid green;
}
#div2{
width: 0%;
height:100%;
background: green;
}
</style>
</head>
<body>
<h1>html5进度条文件上传</h1>
<div id="div1">
<div id="div2"></div>
</div>
<input id="file" type="file" name="点击上传" onchange="selfile();" >
</body>
</html>
ajax-属性、原理、实现html5进度条上传文件的更多相关文章
- PHP+ajaxForm异步带进度条上传文件实例
在使用ajaxForm方法之前,首先需要安装form.js的插件,网上有: 一.首先说用法,ajaxForm可以接收0或1个参数,该参数可以是一个变量.一个对象或回调函数,这个对象主要有以下参数: v ...
- ajax利用html5新特性带进度条上传文件
http://blog.csdn.net/pkgray/article/details/27591283 http://www.matlus.com/html5-file-upload-with-pr ...
- ajaxfileupload原理及用法,主要用于即想用ajax序列化传递参数,又必须上传文件
一,原理 AjaxFileUpload.js并不是一个很出名的插件,只是别人写好的放出来供大家用,原理都是创建隐藏的表单和iframe然后用JS去提交,获得返回值. 当初做了个异步上传的功能,选择它因 ...
- 对Ajax连接的认识~为毛不能上传文件!!!
最近做毕设的时候需要用到上传图片的功能,但是我的毕设全部的传输都是基于ajax的请求,百度了一圈发现TMD居然说ajax不能上传文件!!当时我就不乐意了啊,那难道其他人都用的是黑科技吗?!又来网上的大 ...
- ajax +jsp+iframe无刷新上传文件[转]
http://hi.baidu.com/zj360202/blog/item/f23e3711f929c774cb80c475.html ajax jsp 无刷新上传文件 2009-10-26 16: ...
- AJAX-----15HTML5实现进度条上传
目的当然还是为了提高用户的体验度嘛,, 废话不多说走码.... <!DOCTYPE html> <html lang="en"> <head> ...
- 通过Ajax提交form表单来提交上传文件
Ajax 提交form方式可以将form表单序列化 然后将数据通过data提交至后台,例如: $.ajax({ url : "http://localhost:8080/" ...
- html5 拖拽上传文件时,屏蔽浏览器默认打开文件
参考: https://www.cnblogs.com/kingsm/p/9849339.html
- Android上传图片到PHP服务器并且支持浏览器上传文件(word、图片、音乐等)
暑假已经过了一半了,这才完成计划当中的第二个任务.虽然进度是慢了点.但也算是暑假的收获吧.下面我就把我学习当中的收获记录在此. 还是跟以往一样,先上图片. 操作的步骤:打开程序---->选择上传 ...
随机推荐
- 优雅地关闭worker进程
关闭nginx两种方式 nginx -s stop 立即停止nginx进程 nginx -s quit 优雅地关闭worker进程 开始优雅的关闭worker进程后 01设置定时器 worker_ ...
- SDL初始化和创建窗口
//初始化SDL2和创建一个窗口,并且将屏幕绘制成大红色 #include <iostream> extern "C" { #include <SDL.h> ...
- 机器学习(ML)七之模型选择、欠拟合和过拟合
训练误差和泛化误差 需要区分训练误差(training error)和泛化误差(generalization error).前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现 ...
- 深度学习中的特征(feature)指的是什么?
一般在machine learning意义上,我们常说的feature,是一种对数据的表达.当然,要衡量一种feature是否是合适的表达,要根据数据,应用,ML的模型,方法....很多方面来看.一般 ...
- BZOJ2326 [HNOI2011]数学作业(分块矩阵快速幂)
题意: 定义函数Concatenate (1 ..N)是将所有正整数 1, 2, …, N 顺序连接起来得到的数,如concatenate(1..5)是12345,求concatenate(1...n ...
- vue文件引入全局样式导致样式重复
通常项目中src下的子目录都会有一个style文件夹,专门用来存放全局的样式文件. 这个style文件夹下,一般有reset.css.var.scss.mixin.scss.class.scss.in ...
- [redis读书笔记] 第一部分 数据结构与对象 压缩列表
压缩列表是为了节省内存而设计的,是列表键和哈希键的底层实现之一. 压缩列表的逻辑如下,
- Zookeeper 应用实例
配置管理 程序总是需要配置的,如果程序分散部署在多台机器上,要逐个改变配置就变得困难.好吧,现在把这些配置全部放到zookeeper上去,保存在 Zookeeper 的某个目录节点中,然后所有相关应用 ...
- 高级安全Windows防火墙概述以及最佳实践
本文简单介绍Windows防火墙的概念,给出使用场景并列出了常见的防火墙操作. 简介 在Windows NT6.0之后微软推出了高级安全Windows防火墙(简称WFAS),高级安全Windows防火 ...
- mybatis缓存,包含一级缓存与二级缓存,包括ehcache二级缓存
一,引言 首先我们要明白一点,缓存所做的一切都是为了提高性能.明白了这一点下面我们开始进入正题. 二,mybatis缓存概要 ①.mybatis的缓存有两种,分别是一级缓存和二级缓存.两者都属于查询缓 ...