随心一记

一二三四五,上山打老鼠


  • 首页

  • 归档

  • 标签
ywcsb

ywcsb

游戏可以不玩,小说不能不看。

153 日志
3 分类
42 标签
RSS
GitHub 知乎 随心一记
Links
  • 随心一记
  • 追梦人物的
  • MSDN

Django+ajax传入参数后端接收不到

发表于 2021-03-03 | 阅读 1156 | 分类于 Python |

在一次项目中需要使用ajax传一个数据到后台,测试时发现后台一直都获取不到数组。 然后查资料发现将traditional指定为true就好啦!

    function itServerDelete(data) {
        let status = ""
        $.ajax({
            url: ItServerApi,
            data: {'id': ['5025', '5024', '5023', '5021', '5020', '5019', '5018', '5017', '5016', '5014']},
            type: 'DELETE',
            async: false,
            traditional:true,  //设置为true
            dataType: "json",
            contentType: "application/json",
            headers: {'X-CSRFToken': csrf_token},
            success: function (result) {
                if (result.code === 0) {
                    layer.msg(result.msg, {icon: 6})
                    status = 'true'
                } else {
                    layer.msg(result.msg, {icon: 5})
                    status = 'false'
                }

            },
            error: function () {
                layer.msg('服务器接口异常', {icon: 5})
                status = 'false'
            }

        })
        return status
    }

traditional

防止深度序列化;ajax做数据处理时,是通过该方法进行处理。 jquery1.4版本以后traditional参数,默认false的时候如果是{a:{b:'value'}}是处理成a[b],这样形式,如果是数组:data:{a:[1,2]},是解析成a[]=1&a[]=2,这种方式后台确实要做兼容(取a[b]或a[])来取值。

在数组情况下把traditional参数设置成true,是解析成a=1&a=2,对后台直接通过a拿数据。但是实验了下object情况,把traditional设置成true,转成了a=[object+Object],这样就是费的了。false时解析成上面的形式应该就是类型指示作用,我看到这种格式就知道请求数据是Array还是object了,true就是按照form提交的方式传值。

这个属性默认是false,jquery会深度序列化这个对象,以适应PHP等框架,我们可以通过设置tradtional为true阻止深度序列化

这样以后碰到复选框传多个id的时候就不用前台拼后台spilt了,直接用ajax的traditional属性,传过去一个数组,后台直接一个List idList接受即可。非常方便。

觉得不错,支持一下!
geerniya WeChat Pay

微信打赏

geerniya Alipay

支付宝打赏

# Django # html
Django choices 显示在前端
CentOS7进入救援模式,修复fstab错误

发表评论

共 0 条评论

    暂无评论
© 2018 - 2022 ywcsb
冀ICP备17022045号-1
Supported by 腾讯云