基于SpringMVC与jquery的ajax提交表单的若⼲情况详解
在⽇常的业务中,我们往往使⽤的是ajax提交页⾯数据,⽽不⽤form的action来提交整个表单。现在我来分享⼀下我在⽇常⼯作中遇到的⼀些问题。
⼀、$.post、$.get、$.ajax三者的区别:
顾名思义,$.post和$.get分别是采⽤post⽅式和get⽅式向服务器发送请求。两者的不同是,get请求的参数是在url直接以url?
name1=value1&name2=value2的形式拼接⽽成,⽽post请求的参数会以请求正⽂的形式传送到服务器,这个学习过javaweb知识的应该都知道,在此也不赘述。
在这⾥主要想讲的是关于同异步发送请求的。$.post和$.get默认是采⽤异步的形式向服务器发送请求,但我们的需求中很多情况需要得到服务器的返回值来判断下⼀步的操作,这个时候就需要⽤到$.ajax了。
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上传⽂件⼀直都是⼀个⽐较头疼的问题,在这⾥我⽤的是jquery的⼀个扩展框架,jquery.form.js,此包提供了⼀个$ajaxSubmit⽅法,很好的解决了springmvc下⽂件上传的问题,当然,form表单的method为post,type为multipart/form-data,⽰例代码如下:
$(#id).ajaxSubmit({
type: 'post',
url: 'xxxxxx',
data: {
uername: name,
content: content
},
success: function(data) {
//回调函数
}
});
此时,表单数据和⽂件数据会保存在request中传⼊服务器。后台获取代码如下:
MutlipartHttpServletRequest multipart =(MutlipartHttpServletRequest )request;
//把request转为上传⽂件专⽤的request
Map<String,String[]> dataMap = ParameterMap();
//获取普通表单数的<name,value>键值对
Map<String,Multipart> fileMap = FileMap();
/
jquery框架原理/获取上传⽂件的键值对,当未上传⽂件时,这个键值对会以普通数据存在于dataMap中⽽不是fieMap中
暂时这么多把,想起来了再加。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论