zoukankan      html  css  js  c++  java
  • 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,后台才能够接收到参数。

  • 相关阅读:
    NGUI Sprite 和 Label 改变Layer 或父物体后 未更新深度问题
    unity销毁层级物体及 NGUI 深度理解总结
    unity 2d 和 NGUI layer
    关于NGUI与原生2D混用相互遮盖的问题心得
    CentOS7为firewalld添加开放端口及相关操作
    Python 操作redis有序集合(sorted set)
    win10下安装redis 服务
    python2/3中 将base64数据写成图片,并将图片数据转为16进制数据的方法、bytes/string的区别
    解决最小化安装Centos7后无法上网的问题,以及安装成功后的基本配置
    在mysql中使用group by和order by取每个分组中日期最大一行数据,亲测有效
  • 原文地址:https://www.cnblogs.com/whoknows1/p/9838498.html
Copyright © 2011-2022 走看看