有时候我们后台做了一个引用类型例如:
下面的实体以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结构:
后台在获取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