在平常的业务中,咱们每每使用的是ajax提交页面数据,而不用form的action来提交整个表单。如今我来分享一下我在平常工做中遇到的一些问题。javascript
1、$.post、$.get、$.ajax三者的区别:java
顾名思义,$.post和$.get分别是采用post方式和get方式向服务器发送请求。二者的不一样是,get请求的参数是在url直接以url?name1=value1&name2=value2的形式拼接而成,而post请求的参数会以请求正文的形式传送到服务器,这个学习过javaweb知识的应该都知道,在此也不赘述。jquery
在这里主要想讲的是关于同异步发送请求的。$.post和$.get默认是采用异步的形式向服务器发送请求,但咱们的需求中不少状况须要获得服务器的返回值来判断下一步的操做,这个时候就须要用到$.ajax了。web
var flag=false;
$.ajax({
type: "get",
url: "xxxxxx",
async:false,
data: {username:name, password:pwd},
dataType: "json",
success: function(data){
if(data>0){
flag=true;
}
}
});
如以上代码,type来设置请求方式,async则设置的是同步或者异步,默认为true异步的,此时设置为false。若是用一般的$.post和$.get的话,flag的值是不会随着返回值data的值发生改变的。ajax
2、文件上传spring
ajax上传文件一直都是一个比较头疼的问题,在这里我用的是jquery的一个扩展框架,jquery.form.js,此包提供了一个$ajaxSubmit方法,很好的解决了springmvc下文件上传的问题,固然,form表单的method为post,type为multipart/form-data,示例代码以下:json
$(#id).ajaxSubmit({
type:'post',
url:'xxxxxx',
data: {
uername: name,
content: content
},
success:function(data) {//回调函数
}
});
此时,表单数据和文件数据会保存在request中传入服务器。后台获取代码以下:服务器
MutlipartHttpServletRequest multipart =(MutlipartHttpServletRequest )request;//把request转为上传文件专用的request
Map dataMap =request.getParameterMap();//获取普通表单数的键值对
Map fileMap =request.getFileMap();//获取上传文件的键值对,当未上传文件时,这个键值对会以普通数据存在于dataMap中而不是fieMap中
暂时这么多把,想起来了再加。mvc