在最后一篇文章中,我们
介绍了本文中的后台servlet,所以这里只是前台的JS代码。
首先,HTML5和Ajax提交数据首先要
学习一种新的HTML5表单对象:
表单对象可以使用append
方法关键值添加数据。与以前的JSON不同,我们可以异步
上传二进制
文件。
1,一个formdate对象的
创建 var =新的表单(表单);
2。到formdate对象添加数据
formdata.append(catname
formdata.append(年龄,1); / /数字
类型将被
转换成一个字符串类型
可以增加上传二进制文件,
用户选择的文件已经包含的对象,如fileinputelement
formdata.append(用户文件
/ /一个blob对象也可以被添加到表单
无功ofilebody =嘿!;
无功oblob =新的BLOB({ ofilebody },{类型:
文本或XML});
formdata.append(webmasterfile
三.使用表单对象
新的XMLHttpRequest(XHR)var =;
Xhr.open(后
Xhr.send(表单);
HTML的一部分
简单介绍了表单对象之后,让我们来看看页面的HTML代码编写
底部div用于
显示进度条,因此需要相应的CSS样式。
#母{宽度:550px;高度:10px;边界:2px固体# 09f;}
#儿子{宽度:0;高度:100%;
背景颜色:# 09f;文本对齐:中心;线高度:10px;
字体大小:20px;font-weight: bold;}
js的一部分
再次,加载jQuery
网页上后,我们看看Javascript写的,首先,文件的
组件OnChange事件的方法:
功能showpic(){
var pic = $(# PIC ),(0)。文件{ 0 };
$(img)。道具(src
}
对showpic第一行是从文件对象得到上传文件。第二行img
设置src
属性。你可以即时预览页面上的效果。
以前我们看上传的文件的方法,让我们简单的学习日程事件的进展(事件进展)…
进展事件规范是W3C定义客户端
服务器通信相关的事件的
工作草案。这些事件的最早的真正价值是XHR的
操作,但也有其他可供
参考的API使用。有6个事件的进展。
Loadstart:触发时,相应的数据的第一个字节的接收。
进展:在接收期间
连续触发。
错误:当请求出错时触发。
中止:由于调用了中止()方法,当链路终止时触发。
加载:当接收到完整的对应数据时触发。
Loadend:触发通信完成后或触发错误,中止,或加载事件。
进步是由Mozilla提交事件,这个事件触发定期
浏览器接收新数据时,事件
处理程序接收到一个事件对象进步的
目标属性是一个XHR对象,但含有三个额外的属性:
lengthcomputable:布尔值,指示是否进步的信息是可用的
位置:表示已接收的字节数。
规模:代表字节的预期数量确定根据内容长度相应的头。
有了这个信息,我们可以为用户创建一个进度指示器。但是问题又来了,jQuery的Ajax方法不在进度事件上
运行。这是怎么玩的
发现XMLHttpRequest对象调用jQuery的Ajax方法可以指定它是好的!!!
看8453行,就是这样。代码变成这种风格的UploadFile方法Ajax的部分是当。
代码中最重要的部分:
功能上传
下载(){
U3000 U3000
得到/上传文件到表单对象。
var pic = $(#头),得到(0)。文件{ 0 };
var =新的表单(表单);
formdata.append(文件
$ ajax({
类型:邮政
URL
数据: / /表单,这里上传的数据使用的表单对象
数据处理:假,
false将自动添加必须
正确的内容类型
内容类型:假,
U3000 U3000 U3000 U3000
在这里,我们首先得到一个jQuery / XMLHttpRequest对象,添加进度事件绑定它,然后回到阿贾克斯
Xhr:
函数(){
VaR XHR =美元。ajaxsettings.xhr();
如果(进步XHR。上传){
Xhr.upload.addEventListener(进步
返回XHR;
}
}
});
}
Finally, add the onprogress method to make a full stop to the whole function.
*调查上传附件的
情况,这种方法是约0.05-0。1第二
执行 * /
功能的进步(EVT){
无功负载= evt.loaded; / /上传大小
VaR TOT = evt.total; / /附件的总大小
VaR math.floor每=(100×装 / / / TOT);比例已上传
$(#儿子)。Html(每+%);
$(#儿子)Css(宽。
}
最后,将整个页面附加到代码中进行比较。
html5_2.html
#母{宽度:550px;高度:10px;边界:2px固体# 09f;}
#儿子{宽度:0;高度:100%;背景颜色:# 09f;文本对齐:中心;线高度:10px;字体大小:20px;font-weight: bold;}
功能showpic(){
var pic = $(# PIC ),(0)。文件{ 0 };
$(img)。道具(src
UploadFile();
}
功能上传下载(){
var pic = $(# PIC ),(0)。文件{ 0 };
var =新的表单(表单);
formdata.append(文件
* jQuery表单的
默认处理必须由错误的避免
* XMLHttpRequest将正确处理表单
* /
$ ajax({
类型:邮政
URL
表单数据,
数据处理:假,
false将自动添加必须正确的内容类型
内容类型:假,
Xhr:函数(){
VaR XHR =美元。ajaxsettings.xhr();
如果(进步XHR。上传){
Xhr.upload.addEventListener(进步
返回XHR;
}
}
});
}
*调查上传附件的情况,这种方法是约0.05-0。1第二执行
* /
功能的进步(EVT){
无功负载= evt.loaded; / /上传大小
VaR TOT = evt.total; / /附件的总大小
VaR math.floor每=(100×装 / / / TOT);比例已上传
$(#儿子)。Html(每+%);
$(#儿子)Css(宽。
}