zoukankan      html  css  js  c++  java
  • 给ajax表单提交数据前面加上实体名称

    有时候我们后台做了一个引用类型例如:

    下面的实体以C#为例

    public class Order{
    
        public string orderId{get;set;}
        
        public OrderItem orderItem{get;set;}
    }
    
    public class OrderItem{
        
        public string productName{get;set;}
    public decimal price{get;set;} }

    前台页面的html结构:

    <form id="form1">
        <input type="text" name="productName" value="milk" />
        <input type="text" name="price" value="1.43" />    
        <input type="submit" name="submit" value="submit" />
    </form>

    后台在获取OrderItem的时候我们期望提交的数据格式是

    {orderItem.productName:"",orderItem.price:""}

    首先我们先回收表单的数据这里给一jquery的插件

    ;(function ($) {
        $.fn.serializeJson = function () {
            var serializeObj = {}
            var array = this.serializeArray()
            var str = this.serialize()
            $(array).each(function () {
                if (serializeObj[this.name]) {
                    if ($.isArray(serializeObj[this.name])) {
                        serializeObj[this.name].push(this.value)
                    } else {
                        serializeObj[this.name] = [serializeObj[this.name], this.value]
                    }
                } else {
                    serializeObj[this.name] = this.value
                }
            })
            return serializeObj
        }
    })(jQuery);
    View Code
    var formParam=$("#form1").serializeJson();
    console.log(JSON.stringify(formParam))

     控制台输出{"orderItem":{"productName":"milk","price":"1.45"}}

    然后我们思考 orderItem.productName 肯定是对象的子对象才能用.操作符

    例如{"UserInfo":{"clsName":"one","name":"li yang"}} 访问UserInfo的name属性就可以用UserInfo.name

    好了得到了解决思路了

    var formParam=$("#form1").serializeJson();
    console.log(JSON.stringify(formParam))
    console.log($.param(formParam))

    控制台输出:

    {"orderItem":{"productName":"milk","price":1.43}}

    orderItem%5BproductName%5D=milk&orderItem%5Bprice%5D=1.43

     如果您有更好的解决方法欢迎留言讨论或者加入下面的QQ群来交流讨论

     技术交流QQ群:15129679

  • 相关阅读:
    大道至简阅读笔记08-完结
    (转)MySQL的JDBC驱动源码解析
    Win7如何开启Telnet服务
    idea 设置jetty进程jvm参数
    (转)如何在maven环境中设置JVM参数
    (转)IntelliJ Idea 常用快捷键列表 for win
    cglib Demo
    MAVEN 配置阿里巴巴镜像
    MyBatis入门基础(一)
    JAVA常见面试题之Forward和Redirect的区别
  • 原文地址:https://www.cnblogs.com/yeminglong/p/7456885.html
Copyright © 2011-2022 走看看