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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM