给ajax表单提交数据前面加上实体名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给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);
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
以上是关于给ajax表单提交数据前面加上实体名称的主要内容,如果未能解决你的问题,请参考以下文章
用jquery实现隐藏列表表单的显示关闭切换以及Ajax方式改动提交相应的那一行的改动内容。
通过 AJAX 提交多个具有相同名称的 HTML 表单 [重复]
向后台提交数据:通过form表单提交数据需刷新网页 但通过Ajax提交数据不用刷新网页可通过原生态Ajax或jqueryAjax。Ajax代码部分