• jQuery使用ajax向node后台发送对象、数组参数


    引言

    • 最近在使用jq,做一些小demo,但是突然发现jq使用ajax像后台(node)传递一个对象参数,但是后台却接收不了。

    原因

    • 后面了解到。jq会将一个对象解析成obj[key]: value这样的形式传递给后台,数组解析成arr[]: [],当传入更复杂的对象和数组对象或者数据再嵌套着对象或者数组jq也会解析更深层的对象或者数组,使它们都成为一个个独立的键值对的关系,再传入后台,下面我们演示了几种情况。

    简单的对象、数组

     $.ajax({
        type: 'POST',
        url: 'http://localhost:3003/blogsz',
        dataType: 'json',
        data:{
            arr: [1, 2, 3],
            obj:{
                name: '车神-黄杰',
                age: 23
            }
        }
      })
    

    终端输出结果

    复杂的对象、数组

     $.ajax({
        type: 'POST',
        url: 'http://localhost:3003/blogsz',
        dataType: 'json',
        data:{
            arr: [{gender: '男'}, ['敲代码', '打篮球'], 2, 3],
            obj:{
                name: '车神-黄杰',
                age: 23,
                love:['打豆豆', '爬山'],
                class: {
                    item1: '16电子1',
                    item: '16电子2'
                }
            }
        }
     })
    

    终端输出结果

    解决

    • 很明显,不管是对象还是数组jq都会把它解析成键值对的关系传递给后台,那么只要把对象或者数组变成键值对的关系,就可以不用解析了,这里用到了JSON.stringify()方法把对象和数组解析成一个json字符串,在传递给后台。

    使用JSON.stringify()方法把arr、obj的值解析成json字符串,在后台在使用JSON.parse()解析成js对象和数组

     $.ajax({
        type: 'POST',
        url: 'http://localhost:3003/blogsz',
        dataType: 'json',
        data:{
            arr: JSON.stringify([{gender: '男'}, ['敲代码', '打篮球'], 2, 3]),
            obj:JSON.stringify({
                name: '车神-黄杰',
                age: 23,
                love:['打豆豆', '爬山'],
                class: {
                    item1: '16电子1',
                    item: '16电子2'
                }
            })
        }
     })
    

    后台解析代码

     router.post('/blogsz', (req, res) =>{
    
        const {arr, obj} = req.body
    
        console.log('复杂的对象、数组')
        console.log(req.body)
        
        //使用 JSON.parse()解析json字符串
        const newObj = JSON.parse(obj)
        console.log('-----------------------------')
        console.log("获取name值---->"+ newObj.name)
     }
    

    终端输出结果

  • 相关阅读:
    import和from .xxx import *的一点重要区别
    django 的时区设置
    更新项目,uwsgi重新加载和日志文件
    jQuery将json字符串显示在页面上
    远程访问rhel7的oracle中的问题
    ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
    rhel7使用centos7yum组件
    spring AOP
    public protected default private权限修饰符理解
    用idea创建web项目
  • 原文地址:https://www.cnblogs.com/HJ412/p/11317072.html
Copyright © 2020-2023  润新知