zoukankan      html  css  js  c++  java
  • ajax 传递数组类型参数后台接收不到的问题

     在做排序功能的时候需要将一个数组的数据传递到后台,(当时怎么没用json,如果用json就没有那么多的事情了),数据提交采用ajax!

    先看代码

    js:

     submitbtn: function () {
                //    提交
                $("#submitbtn").click(function () {
                    $.dialog.confirm("确定要提交吗?", function () {
                        var arr = [];
                        $(".title").each(function () {
                            var orderindex = $(this).data("index")
                            arr.push(orderindex);
    
                        })
                        //查看数据是否存在
                        console.log(arr);
                        $.ajax({
                            url: "ChangePaymentTypeLevel",
                            data: { array: arr },
                            type: "post",
                            dataType: "json",
                            dynsc: false,
                            //traditional: true,
                            success: function (res) {
                                $.dialog.alert(res, function () {
                                    window.parent.location.reload();
                                });
                            }
                        })
                    });
                });
            }

    后台:

    /// <summary>
            /// 批量修改支付类型排序
            /// </summary>
            /// <param name="array"></param>
            /// <returns></returns>
            [HttpPost]
            public JsonResult ChangePaymentTypeLevel(string[] array)
            {
                List<int> list = array.Select<string, int>(b => Convert.ToInt32(b)).ToList();
                var result = ConfigService.ChangePaymentTypeLevel(list);
                if (result)
                {
                    return Json("操作成功!");
                }
                else
                {
                    return Json("操作失败!");
                }
            }

     问题是:在js中确实拿到了数据,而且在console中可以展示出来,但是ajax提交到后台的时候总是拿不到,不管是用string[] 还是采用List<string>甚至看Request中对象都没有数据。

    查了资料后知道是ajax数据提交的问题,如果是一个数组需要对traditional进行配置://traditional: true;

    官方文档的解释如下:
    traditional 
    类型:Boolean,jq中默认为false
    如果你想要用传统的方式来序列化数据,那么就设置为 true。
    Set this to true if you wish to use the traditional style of param serialization

    嗯,很简单,自己不知道,如果传递数组的话也可以使用json,只不过你用json多了只有可能就忘记了怎么用数组了!

    有得必有失吧!

    zk-20170905

  • 相关阅读:
    F5 BIG-IP之一前期随笔(应用交付网络产品)
    F5 BIG-IP LTM负载均衡策略
    OA-APP增加空间
    如何在Windows服务器上新建一个Powershell.ps1的定时任务
    领益科技:查询AD中被锁定的账号并进行解锁
    使用Python创建简单的HTTP和FTP服务器
    Mysql binlog日志太多,占用大量磁盘空间该如何正确处理
    【vspher运维】ESXI 日志文件
    【vsphere运维】ESXI命令行操作虚拟机
    内容图片切换
  • 原文地址:https://www.cnblogs.com/zhaokunbokeyuan256/p/7477286.html
Copyright © 2011-2022 走看看