SpringMVC ajax傳值問題

來源:互聯網
上載者:User

標籤:ica   tag   發送資訊   中文亂碼   sys   etag   int   ret   har   

 

 

AJAX前端請求資料處理

SpringMVC後台接受請求資料

SpringMVC對返回給前端資料處理

AJAX前端處理後台返回的資料

 

注意點:

1.ajax提交的參數說明

Datatype:

預期伺服器返回的資料類型。如果不指定,jQuery將自動根據

HTTP包MIME資訊來智能判斷

"json": 返回 JSON 資料

"text": 返回純文字字串

ContentType:

預設值: "application/x-www-form-urlencoded"。發送資訊至伺服器時內容編碼類別型。

Async:

預設值: true。預設設定下,所有請求均為非同步請求。如果需要發送同步請求,請將此選項設定為 false。

Success:

請求成功後的回呼函數。Function(a,b,c)有3個形參,a是返回的資料,b是”success”,c未知。形參的數目可以任意填寫,按順序載入實參

 

2.使用@ResponseBody註解的同時要匯入

  jackson-core-asl-1.8.8.jar

  Jackson-mapper-asl-1.8.8.jar

該註解的功能才會生效

 

方式1:

ajax資料為url尾碼的格式

 

注意:

這種方式,

提交方式使用POST時

contentType: "application/json; charset=utf-8",後台無法擷取值

contentType:"application/x-www-form-urlencoded",後台可以擷取值

當提交方式使用get時

兩者都可以擷取值

 

前台:

function ajaxTest1(){ 

     $.ajax({ 

     data:"name=小紅&age=12", 

     type:"POST", 

     dataType: ‘json‘, 

     url:"ajax/test1", 

     success:function(data){ 

        alert("success");

        alert(data.name);

        alert(data.age);

      },

     error:function(data){ 

         alert("fail"); 

     }

}); 

 

後台:

@RequestMapping(value="ajax/test1") 

    public @ResponseBody Map<String,Object> login1(HttpServletRequest     request,HttpServletResponse response) throws IOException{ 

        System.out.println(request.getParameter("name")); 

        System.out.println(request.getParameter("age"));

        Map<String,Object> map = new HashMap<String,Object>(); 

        map.put("name",request.getParameter("name")); 

        map.put("age",request.getParameter("age"));

        return map; 

}

 

 

方式2:

Ajax資料為json格式

注意:

這種方式,

提交方式使用POST時

contentType: "application/json; charset=utf-8",後台無法擷取值

contentType:"application/x-www-form-urlencoded",後台可以擷取值。且中文不亂碼

當提交方式使用get時

兩者都可以擷取值,但是中文亂碼

 

前台:

 function ajaxTest2(){ 

  

        $.ajax({ 

        data:{"name":"小紅","age":21},

        type:"POST", 

        dataType: ‘json‘,

        url:"ajax/test2", 

        success:function(data){ 

          alert("success");

          alert(data.name);

          alert(data.age);

        },

         error:function(data){ 

            alert("fail"); 

        }

        }); 

    } 

 

後台:

    @RequestMapping(value="ajax/test2") 

    public @ResponseBody Map<String,Object> login2(HttpServletRequest     request,HttpServletResponse response) throws IOException{ 

        System.out.println(request.getParameter("name")); 

         System.out.println(request.getParameter("age"));

         Map<String,Object> map = new HashMap<String,Object>(); 

         map.put("name",request.getParameter("name")); 

         map.put("age",request.getParameter("age"));

         return map; 

 

方式3:

Ajax資料為json轉字串

 

注意:

1.前台json資料的key必須和後台bean對應

所以以下清空會報錯

var data = {"name":"小紅","age":12,"sex":"女"};

var data = {"name":"小紅","sex":"女"};

前台的json資料中key可以預設

所以以下情況正確

var data = {"name":"小紅"};

[email protected] 不需要匯入額外的jar包

3.contentType必須聲明為"application/json;charset=utf-8",不然會報錯

 

 

前台:

 function ajaxTest3(){ 

       var data = {"name":"小紅","age":12};

       $.ajax({

         url: "ajax/test3",

         data: JSON.stringify(data),

         contentType: "application/json;charset=utf-8",

         type: "POST",

         success:function(data){ 

          alert("success");

          alert(data.name);

          alert(data.age);

        },

         error:function(data,b,c){ 

            alert("fail"); 

            alert(b);

        }

       });

  } 

 

 

後台:

@RequestMapping(value="ajax/test3") 

    public @ResponseBody Person  login3(@RequestBody  Person aa ) throws IOException{       

       System.out.println(aa);

        return aa;   

}

 

自訂一個Person類:

public class Person {

     private String name;

     private int age;

     public String getName() { return name;    }

     public void setName(String name) { this.name = name;    }

     public int getAge() { return age;    }

     public void setAge(int age) { this.age = age;    }

 

方式4:

後台使用hashmap接受前段的值

 

方式5:

後台不使用@Respone自動轉換json資料,而使用respone,write方法寫入

SpringMVC ajax傳值問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.