基於SpringMVC與jquery的ajax提交表單的若干狀況詳解

在平常的業務中,咱們每每使用的是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<String,String[]> dataMap = request.getParameterMap();
//獲取普通表單數的<name,value>鍵值對
Map<String,Multipart> fileMap = request.getFileMap();
//獲取上傳文件的鍵值對,當未上傳文件時,這個鍵值對會以普通數據存在於dataMap中而不是fieMap中

暫時這麼多把,想起來了再加。mvc

相關文章
相關標籤/搜索