Ajax提交进度显示实例

概述:ajax提交比较大的文件的时候,我们希望能够看到它上传的进度,代码放下面了。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XMLHttpRequest 上传文件进度条示例</title>
</head>
<body>
<progress id="upload_progress" value="0" max="100"></progress>
<input id="upload_file" type="file" name="upload_file" />
<button id="btn_start">Start</button>
<button id="btn_cancel">Cancel</button>
<script type="text/javascript" src="/res/lib/jquery-1.11.3.js"></script>
<script type="text/javascript">
var xhr = new XMLHttpRequest();
var progressBar = document.getElementById(‘upload_progress‘);
$(‘#btn_start‘).click(function() {
    var uploadFile = document.getElementById(‘upload_file‘).files[0];
    var formData = new FormData();
    formData.append(‘upload_file‘, uploadFile);

    // ---------------------------------------
    // 原生xmlHttpRequest发送
    xhr.open(‘post‘, ‘/server_url.php‘);
    xhr.onload = function() {
        alert(‘完成!‘);
    };
    xhr.onerror = function() {
        alert(‘无法连接服务器!‘);
    };
    xhr.upload.onprogress = function(progress) {
        if (progress.lengthComputable) {
            console.log(progress.loaded / progress.total * 100);
            progressBar.max = progress.total;
            progressBar.value = progress.loaded;
        }
    };
    xhr.upload.onloadstart = function() {
        console.log(‘started...‘);
    };
    xhr.send(formData);

    // ---------------------------------------
    // 使用ajax发送
    /**
    $.ajax({
       type: "POST",
      url: "/server_url.php",
      data: formData , //这里上传的数据使用了formData 对象
      processData: false,
      contentType: false, //必须false才会自动加上正确的Content-Type
      //这里我们先拿到jQuery产生的 XMLHttpRequest对象,为其增加 progress 事件绑定,然后再返回交给ajax使用
      xhr: function() {
        var xhr = $.ajaxSettings.xhr();
        if (xhr.upload) {
          xhr.upload.onprogress = function(progress) {
                    if (progress.lengthComputable) {
                        console.log(progress.loaded / progress.total * 100);
                        progressBar.max = progress.total;
                        progressBar.value = progress.loaded;
                    }
                };
                xhr.upload.onloadstart = function() {
                    console.log(‘started...‘);
                };
         }
              return xhr;
       }
    }).done(function(resp) {
        alert(‘完成!‘);
    }).fail(function(err) {
        alert(‘无法连接服务器!‘)
    });*/

});

$(‘#btn_cancel‘).click(function() {
    xhr.abort();
});
</script>
</body>
</html>

原理就是这样,需要在此基础上做扩展的可以随意添加自己想要的功能。

时间: 2024-10-08 18:44:05

Ajax提交进度显示实例的相关文章

Django Form组件实例:登录界面[Form表单提交,Ajax提交]

"""本例中使用Form和Ajax进行了数据提交,Form提交有一个问题,就是输入错误的数据,刷新之后原有的数据会丢失.注意到Form组件可以生成HTML标签,将Form生成的对象传到前端,就可以保留原有的内容,具体见下文:""" 1 from django.shortcuts import * 2 from app02 import models 3 import json 4 5 # Create your views here. 6 def

Jquery ajax提交表单几种方法详解

[导读] 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的方法.$get方式提交表单get() 方法通过远程 HTTP 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize();就行了,下面我来介绍两个提交表单数据的方法. $get方式提交表单 get() 方

nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。

ownload:http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gzconfigure and make : ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module   --add-module=/data/software/lnmp1.

jQuery Ajax: $.post请求实例

jQuery Ajax: $.post请求实例 leyangjun.html页面 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="./jquery-2.0.0.min.js"></scri

使用ajax提交form表单,包括ajax文件上传

前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的ajax $.ajax({ url:"${pageContext.request.contextPath}/public/testupload", type:"post", data:{username:username}, success:function(data){ w

Ajax提交底层原型XMLHttpRequest

相信接触过ajax的都觉得其post,get提交很方便,那么他是怎么实现的呢?基于此我们就不得不谈到js中的XMLHttpRequest对象. 其中w3c中是这样解释的: XMLHttpRequest 对象用于在后台与服务器交换数据. XMLHttpRequest 对象是开发者的梦想,因为您能够: 在不重新加载页面的情况下更新网页 在页面已加载后从服务器请求数据 在页面已加载后从服务器接收数据 在后台向服务器发送数据 所有现代的浏览器都支持 XMLHttpRequest 对象. XMLHttpR

spring ajax提交并返回数据方式

jsp $('#userId').change(function() { $.ajax({ url: "${ctx}/test/checkUser.do", contentType: "application/json;charset=utf-8", type: "get", data:{ userId:$("#userId").val() }, success: function(data) { if(data!=''){

easyui行编辑:利用append row添加行,直接在行中编辑,ajax提交保存

今天工作用到了easyui行编辑,在这里总结一下,不会的同学可以看看,顺便吐槽一下,网上的很多博客都是粘贴复制的,内容很乱 ,而且看不懂,不知道这些粘贴复制的怀的是什么心,不但没用,还影响别人搜索. 呼吁大家在写博客的时候认真一些,别只粘贴复制,至少可以自己运行好了贴上自己的代码和一点感想,对别人用处很大的. 好了,正题开始--> 我用的是easyui 1.4 效果如下: 点击添加按钮,在第二行的位置添加新行,点击单元格输入内容,点保存通过ajax提交. 修改则直接点击单元格修改,点保存提交.

采用ajax提交POST数据的例子

问题描述 我们将一个form中的input和checkbox中的数据异步提交到php服务器,经过处理之后传回. 提交之后显示的位置: 难点分析 采用from表单的onsubmit属性阻止表单的提交 <form action="http://www.baidu.com" onsubmit="return check()"> 通过check函数的return false;操作阻止表单的提交,实现不刷新提交数据的目的. 获取复选框选中的选项的值 checkbo