基于SpringMVC与jquery的ajax提交表单的若干情况详解一、$post、$、$ajax三者的区别(参考文献): $post和$分别是采用post方式和get方式向服务器发送请求。两者的不同是,get请求的参数是在url直接以url?name1=value1&name2=value2的形式拼接而成,而post请求的参数会以请求正文的形式传送到服务器 关于同异步发送请求:$post和$默认是采用异步的形式向服务器发送请求,但需很多情况需要得到服务器的返回值来判断下一步的操作,此时需要用到$ajaxvar 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和$的话,flag的值是不会随着返回值data的值发生改变的。 二、文件上传ajax上传文件一直都是一个比较难点的问题,在这里我用的是jquery的一个扩展框架,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转为上传文件专用的requestMap dataMap = ParameterMap();//获取普通表单数的键值对Map fileMap = FileMap();//获取上传文件的键值对,当未上传文件时,这个键值对会以普通数据存在于dataMap中而不是fieMap中