javascript代码实例教程-JS案例之4――Ajax多图上传

发布时间:2019-01-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JS案例之4――Ajax多图上传脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 近期项目中有好几次用到多图上传,第一次在项目中真正用到Ajax技,稍微整理了下,贴个案例出来。

 

我们传统的做法是当用户提交一个表单时,就向web服务器端发送一个请求。服务器接受并处理传来的表单信息,处理完成后返回一个新的页面。这个做法比较浪费带宽,当请求数较多时,页面响应的时间就依赖于服务器处理的时间。

 

而Ajax应用仅向服务器发送并取回必需的数据,其他不需要的数据不用响应,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JS来处理来自服务器的响应。因此在服务器和浏览器之间交换的数据比较少,应用能很快速的响应。使用Ajax应用的最大特点是实现内容部分更新,不用刷新整个页面就能维护指定的数据,实现动态更新,这样能避免在网络上发送一些没有修改过的信息。Ajax应用的最大缺点是可能破坏浏览器后退按钮的正常行为。在Ajax中,JS主要用于将用户界面上的数据传递到服务器端,并处理返回来的结果。XMLHttPRequest对象用来响应通过http传递的数据,一旦数据返回到客户端就可以立刻使用DOM将数据放到页面上。

 

 

 

工作原理大致如下:

 

1.新建一个XMLHttpRequest 对象,用于直接与服务器通信。注意不同浏览器的不同写法。

 

xhr = new XMLHttpRequest();

 

2.向服务器发送请求,需要使用OPEn()和send()。

 

open() 方法需要三个参数。第一个参数定义发送请求所使用的方法(GET 还是 POST)。第二个参数规定服务器端脚本的 URL。第三个参数规定应当对请求进行异步地处理。

 

send() 方法可将请求送往服务器。只有一个参数,为要发送的数据,如果没有数据,则传null。

 

xhr.open('POST',self.uploadURL,true);

xhr.send(formData);    //formData为序列化的表单数据 

 

3.定义onreadystatechange函数。XMLHttpRequest 对象的三个重要的属性:onreadystatechange(服务器响应的函数),readyState(服务器响应的状态),responseText(服务器返回的数据) 

 

xhr.onreadystatechange = function(){

  if(xhr.readyState == 4){      //状态码为4时,表示请求已完成

    self.cbUploaDFile(xhr.responseText);       //xhr.responseText表示服务器返回的数据,为JSON文本

  }

}

 

 

 

案例截图:

 

 

 

代码:

 

复制代码

 1 <!DOCTYPE html>

 2 <html>

 3 <head>

 4 <;meta http-equiv="Content-type" Content="text/html; charset=utf-8;">

 5 <tITle> JS AJAX多图上传 </title>

 6 <meta name="author" content="rainna" />

 7 <meta name="keywords" content="rainna's js lib" />

 8 <meta name="description" content="JS Ajax多图上传" />

 9 <style>

10 .m-imglist{margin:20px 0 0;}

11 .m-imglist img{float:left;width:200px;height:200px;margin:0 10px 10px 0;}

12 </style>

13 </head>

14 

15 <body>

16 <form name="form" id="form">

17     <input type="file" multiple />

18 </form>

19 <p class="m-imglist" id="imglist"></p>

20 

21 <script>

22 VAR uploadPic = {

23     upForm:document.getElementById('form'),

24     uploadIpt:document.getelementsbytagname('input')[0],

25     uploadURL:'https://upload.photo.163.COM/upload/usere?siteFrom=lowerwerewog&responsetype=json&uswerinesize=3000x15000x0X100',

26 

27     //开始上传

28     uploadFile:function(event){

29         var self = this;

30         self.files = event.target.files || event.datatransfer.files;

31         for(var i=0,l=self.files.length;i<l;i++){

32             self.doUploadFile(self.files[i]);

33         }

34     },

35     //执行上传

36     doUploadFile:function(file){

37         if(!file) return;

38         var self = this,

39             xhr = new XMLHttpRequest(),    //新建xhr对象

40             formData = new FormData();       //FormData()对象用于存放序列化的表单数据 

41         formData.append('Filedata', file);

42 

43         if(xhr.upload) {

44             //向服务器发送请求

45             xhr.open('POST',self.uploadURL,true);

46             xhr.send(formData);

47             

48             xhr.onreadystatechange = function(){

49               if(xhr.readyState == 4){      //状态码为4时,表示请求已完成

50                 self.cbUploadFile(xhr.responseText);       //xhr.responseText表示服务器返回的数据,为JSON文本

51               }

52             }

53         }

54     },

55     //上传回调

56     cbUploadFile:function(text){

57         var photo,userDeF1Url,node;

58         var self = this;

59         photo = JSON.parse(text);

60         if(photo.resultcode == 999){       //成功上传

61             userDef1Url = photo.userDef1Url;   //图片的url地址

62             node = new Image();

63             node.src = userDef1Url;

64         }

65         document.getElementById('imglist').appendChild(node);

66     },

67     //初始化

68     init:function(){

69         var self = this;

70         self.uploadIpt.onchange = function(event){

71             self.uploadFile(event);

72         }

73     }

74 };

75 

76 uploadPic.init();

77 </script>

78 </body>

79 </html>

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-JS案例之4――Ajax多图上传全部内容,希望文章能够帮你解决javascript代码实例教程-JS案例之4――Ajax多图上传所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。