ajax技术应用的举例

ajax无刷新的上传的技术

页面的部分:
(1)上传的预览功能的实现
(2)上传的无刷新技术的实现

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" id="form">
    <input type="text" name="username" id="username">
    <input type="file" name="file" id="file" onchange="preview()">
    <input type="button" value="提交" onclick="upload()">
</form>
<img src="" id="img">
<script>
    //预览的功能
    function preview() {
        var fileInput = document.getElementById("file");
        var files = fileInput.files;
        if (files[0] != null) {
            var file = files[0];
            var reader = new FileReader();
            reader.onload = function () {
                var img = document.getElementById("img");
                img.src = reader.result;
            }
            reader.readAsDataURL(file);
        }
    }

    //无刷新上传的技术
    function upload() {
        var xhr = new XMLHttpRequest();
        xhr.onload = function () {
            alert(xhr.responseText)
        }
        xhr.open("post", "/upload", true);
        var form = document.getElementById("form");
        var data = new FormData(form);
        xhr.send(data)
    }
</script>
</body>
</html>

控制器的部分:

@Controller
public class UploadController {

    @RequestMapping("/upload")
    @ResponseBody
    public String upload(MultipartFile file ,String username) throws IOException {
        System.out.println("姓名:" + username);
        System.out.println("文件的原始的大小:"+file.getOriginalFilename());

        file.transferTo(new File("d:\\"+file.getOriginalFilename()));

        return "上传成功";
    }
}

第三方的库发送ajax的请求

jquery发送ajax的请求
举例:还是应用的是上个例子,采用ajax的技术上传一个图片:

<form id="form" enctype="multipart/form-data" method="post">
    <input type="text" name="username" id="username">
    <input type="file" name="file" id="file" onchange="preview()">
    <input type="button" value="上传" onclick="upload()">
</form>
<img src="" id="img">
</body>

javascript的代码

<script>
    function preview() {
       var fileInput = document.getElementById("file")
        var files = fileInput.files;
       if(files[0] != null){
           var reader = new FileReader();
           var file = files[0];
           reader.onload = function () {
               var img = document.getElementById("img");
               img.src = reader.result;
           }
           reader.readAsDataURL(file);
       }
    };
    function upload() {
        $.ajax({
            contentType:false,
            processData:false,
            url:"/upload",
            data:new FormData(document.getElementById("form")),
            type:"post",
            success:function () {

            },
            error:function () {

            },
           
        })
    }

注意:在上传图片的时候要注意两个属性的参数的修改:
contentType:false, 只有将这个属性设置为false的时候才可以将表单的enctype的属性加上
processData:false 将这个属性设置为false的时候可以避免jquery对Formdata的默认的处理
jquery发送ajax的请求的时候,一般的格式为如下:

$.ajax({
data:"请求参数",
type:"post|get|put|delete", //代表的是请求的类型
url:"请求的路径",
success:fuction(obj){
//这是响应成功后的执行的方法,obj代表的是响应的结果
},
error:function(xhr){
//请求与响应出现错误的时候会执行的函数
}
})

其他的写法

//jquery发送get请求的方式
$.get("请求地址","请求参数").done(function(){}).fail(function(){});
//jquery发送post请求
$.post("请求地址","请求参数").done(function(){}).fail(function(){});

猜你喜欢

转载自blog.csdn.net/weixin_40843624/article/details/84207088
今日推荐