Ajax請求的參數


  • post請求和get請求存放參數位置
  • post請求和get請求存放參數位置是不同的:

  • post方式參數存放在請求數據包的消息體中。

  • get方式參數存放在請求數據包的請求行的URI字段中,以?開始以param=value&param2=value2的形式附加在URI字段之后。

  • 而request.setCharacterEncoding(charset);只對消息體中的數據起作用,對於URI字段中的參數不起作用。 

    get用new String(target.trim().getBytes("ISO-8859-1"), charset);

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

get請求的參數

 

$.ajax({
    url : SITE_PATH + "/userLogRecord/getList3?name1=name&name2=name2",
    type : 'GET',
    dataType : 'json',
    data:{name3:"name3"},
    success : function(data) {
        console.log(111111);
    },
    error : function(msg) {
    }
});

 

1、沒有search也沒有data,即標准的無參數get請求,這種既然沒有參數,當然也就不涉及content-Type(請求參數data的數據類型)。

因此url+type就是必須得了,dataType視返回結果而定,常見的無非是兩種,一種不用寫,一種如上所示為json。

 

2、

有search沒有data

沒有search有data

有search也有data

這三種都是一樣的,都會拼接在url后面以search的形式進行請求

 

$.ajax({
    url : SITE_PATH + "/userLogRecord/getList3",
    type : 'GET',
    dataType : 'json',
    success : function(data) {
        console.log(1);
    },
    error : function(msg) {
        console.log(0);
    }
});

$.ajax({
    url : SITE_PATH + "/userLogRecord/getList4?name1=name1&name2=name2&name3=name3",
    type : 'GET',
    dataType : 'json',
    success : function(data) {
        console.log(1);
    },
    error : function(msg) {
        console.log(0);
    }
});

$.ajax({
    url : SITE_PATH + "/userLogRecord/getList5",
    type : 'GET',
    dataType : 'json',
    data:{name1:"name1",name2:"name2",name3:"name3"},
    success : function(data) {
        console.log(1);
    },
    error : function(msg) {
        console.log(0);
    }
});

$.ajax({
    url : SITE_PATH + "/userLogRecord/getList6?name1=name1",
    type : 'GET',
    dataType : 'json',
    data:{name2:"name2",name3:"name3"},
    success : function(data) {
        console.log(1);
    },
    error : function(msg) {
        console.log(0);
    }
});

 

 

因此對於GET請求

1、放在URL后面和data里面都是一樣的

2、放在data里面的數據不能轉成JSON對象,應該使用JSON字符串

data:JSON.stringify({name3:"name3"}),

3、content-Type可以不設置,或者設置成默認值application/x-www-form-urlencoded,此時絕對不能使用contentType : 'application/json;charset=UTF-8',

 

   @RequestMapping(value = "/getList3", method = RequestMethod.GET)
    @ResponseBody
    public Map<String, Object> getList3() {
        Map<String, Object> result = new HashMap<>();
        result.put("status", "getList3");
        return result;
    }
    
    @RequestMapping(value = "/getList4", method = RequestMethod.GET)
    @ResponseBody
    public Map<String, Object> getList4(String name1, String name2,String name3 ) {
        Map<String, Object> result = new HashMap<>();
        result.put("status", "getList4");
        result.put("name1", name1);
        result.put("name2", name2);
        result.put("name3", name3);
        return result;
    }
    
    @RequestMapping(value = "/getList5", method = RequestMethod.GET)
    @ResponseBody
    public Map<String, Object> getList5(String name1, String name2,String name3 ) {
        Map<String, Object> result = new HashMap<>();
        result.put("status", "getList5");
        result.put("name1", name1);
        result.put("name2", name2);
        result.put("name3", name3);
        return result;
    }
    
    @RequestMapping(value = "/getList6", method = RequestMethod.GET)
    @ResponseBody
    public Map<String, Object> getList6(String name1, String name2,String name3 ) {
        Map<String, Object> result = new HashMap<>();
        result.put("status", "getList6");
        result.put("name1", name1);
        result.put("name2", name2);
        result.put("name3", name3);
        return result;
    }

@ResponseBody(這個注解意味着這個方法的返回值不是頁面名稱,而是同一次請求的返回體(也就是服務器返回給客戶端的數據))

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

POST請求的參數

對於放在URL后面的search,這個跟GET一樣

但是對於data,有兩種

一種是使用json字符串,不能使用JSON.stringify(({name3:"name3"}),contentType為默認值application/x-www-form-urlencoded

一種是使用json對象,必須使用JSON.stringify(({name3:"name3"}),contentType : 'application/json;charset=UTF-8',

 

 

$.ajax({
    url : SITE_PATH + "/userLogRecord/getList?name1=name1",
    type : 'POST',
    async : false,
    contentType : 'application/json;charset=UTF-8',
    dataType : 'json',
    data : JSON.stringify(parameter),
    success : function(data) {
        console.log(111111);
    },
    error : function(msg) {
    }
});
         
$.ajax({
    url : SITE_PATH + "/userLogRecord/getList1",
    type : 'POST',
    dataType : 'json',
    data : {name1:"aa",name2:"aasfa"},
    success : function(data) {
        console.log(111111);
    },
    error : function(msg) {
    }
});

 $.ajax({
    url : SITE_PATH + "/userLogRecord/getList2?name1=name&name2=name2",
    type : 'POST',
    dataType : 'json',
    success : function(data) {
        console.log(111111);
    },
    error : function(msg) {
    }
});
            
$.ajax({
    url : SITE_PATH + "/userLogRecord/getList21?name1=name&name2=name2",
    type : 'POST',
    dataType : 'json',
    data:{name3:"name3"},
    success : function(data) {
        console.log(111111);
    },
    error : function(msg) {
    }
});

 

  @RequestMapping(value = "/getList")
    @ResponseBody
    public Map<String, Object> getList(@RequestBody Map<String, Object> data , String name1) {
        Map<String, Object> result = new HashMap<>();
        result.put("status", "success1");
        return result;
    }
    
    @RequestMapping(value = "/getList1")
    @ResponseBody
    public Map<String, Object> getList1(String name1, String name2) {
        Map<String, Object> result = new HashMap<>();
        result.put("status", "success1-name1");
        result.put("name1", name1);
        result.put("name2", name2);
        return result;
    }
    
    @RequestMapping(value = "/getList2")
    @ResponseBody
    public Map<String, Object> getList2(String name1, String name2) {
        Map<String, Object> result = new HashMap<>();
        result.put("status", "success1-name1");
        result.put("name1", name1);
        result.put("name2", name2);
        return result;
    }
    
    @RequestMapping(value = "/getList21")
    @ResponseBody
    public Map<String, Object> getList21(String name1, String name2,String name3) {
        Map<String, Object> result = new HashMap<>();
        result.put("status", "success1-name1");
        result.put("name1", name1);
        result.put("name2", name2);
        result.put("name3", name3);
        return result;
    }

 

 1、傳遞json字符串的時候,POST請求的data並沒有合到URL里面一起請求,但是在后台接收參數的時候,search和data都是通過同名參數直接接收的。

2、傳遞JSON對象的時候,需要用@RequestBody Map<String, Object> data,后台才能夠接收到參數。


免責聲明!

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



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