zoukankan      html  css  js  c++  java
  • 原生js实现ajax的文件异步提交功能、图片预览功能.实例

    采用html5使得选择图片改变时,预览框中图片随之改变。input文件选择框美化。原生js完成文件异步提交

    效果图:

    代码如下,可直接复制并保存为html文件打开查看效果

    <html>
    <head>
        <title>Title</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
        
        <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
     
        <script>
     
    //        html5实现图片预览功能
            $(function(){
                $("#file").change(function(e){
                    var file = e.target.files[0]||e.dataTransfer.files[0];
                    $('#photoCover').val(document.getElementById("file").files[0].name);
                    if(file){
                        var reader = new FileReader();
                        reader.onload=function(){
                            $("img").attr("src", this.result);
                        }
     
                        reader.readAsDataURL(file);
                    }
                });
            })
     
            function saveUser(){
                var id = $("#id").val().trim();
                var uname = $("#uname").val().trim();
                var pwd = $("#pwd").val().trim();
                var file = document.getElementById("file").files[0];
     
    //            原生ajax实现文件上传
                var form = new FormData();
                form.append("uname", uname); // 可以增加表单数据
                form.append("id", id);
                form.append("pwd", pwd);
                if(file){
                    form.append("file", file);
                }
     
     
                var xhr = null; //得到xhr对象
                if(XMLHttpRequest){
                    xhr = new XMLHttpRequest();
                }else{
                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                }
     
                xhr.open("post", "${ctx}/user/save", true);//设置提交方式,url,异步提交
                xhr.onload = function ()
                {
                    var data = xhr.responseText;    //得到返回值
                   // alert(data);
                    var errorMsg = JSON.parse(data);
                    alert(errorMsg.msg);
                    if(errorMsg.code == "0"){
                        alert("success"); //成功
                    }
     
                }
                xhr.send(form);
     
            }
        </script>
     
    </head>
    <body style="overflow:scroll;overflow-y:hidden;overflow-x:hidden">
    <div style="height: 20px"></div>
    <div class="container">
        <div class="row">
     
            <div class="col-md-6 col-md-offset-3">
                <form class="form-horizontal" enctype="multipart/form-data" role="form">
     
                    <input type="hidden" value="${user.id}" id="id"/>
                    <div class="control-group">
                        <label for="uname" class="col-md-3 control-label span3">姓 名:</label>
                        <div class="col-md-9">
                            <input type="text" class="form-control span3" value="" id="uname"
                                   placeholder="请输入姓名">
                        </div>
                    </div>
     
                    <div class="control-group">
                        <label for="pwd" class="col-md-3 control-label span3">密码:</label>
                        <div class="col-md-9">
                            <input type="password" class="form-control span3" value="" id="pwd"
                                   placeholder="请输入密码">
                        </div>
                    </div>
     
                    <div class="control-group">
                        <label  class="col-md-3 control-label span3"></label>
                        <div class="col-md-9">
                            <img src="" width="100px" height="100px">
                        </div>
                    </div>
    
                    <div class="control-group">
                        
                        <label for="requirement" class="col-md-3 control-label span3">图片上传</label>
                        <div class="col-md-9">
                            <div class="input-group">
                                <input id="photoCover" class="form-control" readonly type="text">
                                <label class="input-group-btn">
                                <input id="file" type="file" style="left:-9999px;position:absolute;">
                                <span class="btn btn-default">Browse</span>
                                </label>
                            </div>
                        </div>
                     </div>
     
                    <div class="control-group">
                        <label class="col-md-2 control-label span2"></label>
                        <div class="col-md-10">
                            <button type="button" class="btn btn-small btn-primary" onclick="saveUser()">提交</button>
                            <a type="button" class="btn btn-small btn-danger">取消</a>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
    
    </body>
    </html>
  • 相关阅读:
    二分匹配最大匹配的理解(附图解)
    poj2060Taxi Cab Scheme(二分图匹配)
    codeforce Pashmak and Buses(dfs枚举)
    UVAoj 348
    poj2253 Frogger(最短路变型或者最小生成树)
    ZZUOJ1196: 单调数
    hdu3339 In Action(Dijkstra+01背包)
    ZZUOJ 1199 大小关系(拓扑排序,两种方法_判断入度和dfs回路判断)
    hdu 1241 Oil Deposits (一次dfs搞定有某有)
    POJ 2312Battle City(BFS-priority_queue 或者是建图spfa)
  • 原文地址:https://www.cnblogs.com/YangJavaer/p/6186352.html
Copyright © 2011-2022 走看看