zoukankan      html  css  js  c++  java
  • 使用URLSearchParams处理axios发送的数据

    使用URLSearchParams处理axios发送的数据

    在使用axios这个ajax插件的时候,有时候会遇到一些问题,比如:数据格式不正确

    以最简单的例子为基础(这里使用post方法):

     

    在上面的例子中我们直接调用axios的post方法,传给后台的参数为json格式,这和jquery的ajax写法相当类似!

    但是,axios发送的数据格式和jquery ajax发送的默认数据格式却不相同,不同之处

    1axios的数据类型

     

    2、jquery ajax的数据类型

     

    即使修改了ContentType,数据依然不正确:

     

    解决办法:使用URLSearchParams来处理参数,URLSearchParams的兼容性并不高,所以使用的时候还是要注意(可以考虑使用babel来转换)

      具体的操作如下:

     

     

    3、URLSearchParams接口用法:处理URL上的参数串的,主要处理形如参数名1=参数值1&参数名2=参数值2(如Name=AA&Age=30)这部分内容,该接口不常用方法有:

           URLSearchParams.append()插入一个指定的键/值对作为新的搜索参数

           URLSearchParams.delete()从搜索参数列表里删除指定的搜索参数及其对应的值。

           URLSearchParams.entries()返回一个iterator可以遍历所有键/值对的对象。

           URLSearchParams.get()获取指定搜索参数的第一个值。

           URLSearchParams.getAll()获取指定搜索参数的所有值,返回是一个数组。

           URLSearchParams.has()返回 Boolean 判断是否存在此搜索参数。

           URLSearchParams.keys()返回iterator 此对象包含了键/值对的所有键名。

           URLSearchParams.set()设置一个搜索参数的新值,假如原来有多个值将删除其他所有的值。

           URLSearchParams.sort()按键名排序。

           URLSearchParams.toString()返回搜索参数组成的字符串,可直接使用在URL上。

           URLSearchParams.values()返回iterator 此对象包含了键/值对的所有值。 

    4、示例:

     (1)前端

    <!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>Document</title>

        <link rel="stylesheet" href="../js/index.css">

        <script src="../js/vue.js" type="text/javascript"></script>

        <script src="../js/elementUI.js" type="text/javascript"></script>

        <script src="../js/axios.js" type="text/javascript"></script>

    </head>

    <body>

        <div id="app">

          <el-form>

            <el-select v-model="value" placeholder="请选择" multiple>

                <el-option

                  v-for="item in options"

                  :key="item.value"

                  :label="item.label"

                  :value="item.value"

                  :disabled="item.disabled">

                </el-option>

            </el-select>

            <el-button type="primary" @click="Submit">确定</el-button>

          </el-form>

        </div>

        <script>

            new Vue({

                el:"#app",

                data(){

                  return{

                   options: [{

                     value: '曹操',

                     company: '魏国',

                     label: '曹操',

                     school: '长安大学'

                    }, {

                     value: '孙权',

                     company: '吴国',

                     label: '孙权',

                     school: '南京大学'

                    }, {

                     value: '刘备',

                     company: '蜀国',

                     label: '刘备',

                     school: '成都大学'

                    }, {

                     value: '司马懿',

                     company: '魏晋',

                     label: '司马懿',

                     school: '复旦大学'

                    }, {

                     value: '诸葛亮',

                     company: '蜀国',

                     label: '诸葛亮',

                     school: '武汉大学'

                    }],

                    value: ''

                }     

            },

            methods:{

                    Submit(){

                        let _this = this;

                        console.info(_this.value);

                        var d1 = new URLSearchParams();

                        d1.append('Arr',_this.value)

                        axios({

                           url:"http://localhost:8080/demo/test",

                           method:'post',

                           data:d1

                        })

                    }

                }

             

    });

        </script>

    </body>

    </html>

    2)后台

    @CrossOrigin
    @PostMapping("/test")
    public String test(HttpServletRequest request){
        String array = request.getParameter("Arr");
        String[] arr = array.split(",");
        String str = "Element Test";
        System.out.println("--------------------------------");
        System.out.println(str);
        for(int i=0;i<arr.length;i++) {
            System.out.println("arr[" +i+"]"+arr[i]);
        }
        return str;
    }

  • 相关阅读:
    LTS版本的解析
    symfony中twig的模板过滤器
    symfony中twig的模板载入
    symfony中twig的流程控制if,for用法
    symfony中twig的模板变量与注释
    使用Symfony 2在三小时内开发一个寻人平台
    symfony在模板中生成url
    模板中引入其他的模板
    劳务派遣有新规章,劳务工有保障了|中山劳务派
    Symfony启动过程详细学习
  • 原文地址:https://www.cnblogs.com/lone5wolf/p/13826864.html
Copyright © 2011-2022 走看看