asp mvc ajax json,序列化json对象,通过ajax传入asp.net mvc后台

今天遇到一个问题,准备把组织好的json对象通过jquery.ajax post方式传入asp.net mvc后台,谁知道一直接不到数据。很是郁闷,我以前都是这样传的啊。

后台:

c6738484085873638a0689cad2a2f236.png

前台:

d987ddb75eb666a359e9eb4de5163b7e.png

结果试了各种方式,实在传不过来,突然看了一下Request.Form的值

tag=first&p[name]=yuxiang&p[age]=22

啊啊啊,想到了我以前都是用form表单传的,用jquery传就把序列化成这个样子了,而正常的样子应该是 tag=first&p.name=yuxiang&p.age=22

没办法了,上google搜了一把,也没找到好的方法。只能自己写序列化了。

67d0865f17d9be527254bf8a8ff6c5b4.gif

// string

var string = {

format: function (value, args) {

/// 将指定字符串中的一个或多个格式项替换为指定对象的字符串表示形式。

/// 复合格式字符串。

/// 要设置格式的对象,可以为多个。

if (arguments.length === 0) return "";

var str = value;

for (var i = 1, len = arguments.length; i < len; i++) {

var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');

str = str.replace(re, arguments[i]);

}

return str;

}

}

// 序列化asp.net mvc3 model

libra.serializeModel = function (obj) {

var result = { value: "" };

serializeModelCore(result, "", obj);

result.value = result.value.slice(0, result.value.length - 1);

return result.value;

}

function serializeModelCore(result, objName, item) {

// 数组

if (libra.isArray(item)) {

for (var i = 0, len = item.length; i < len; i++) {

var objNameParam = objName + "[" + i + "]";

serializeModelCore(result, objNameParam, item[i]);

}

}

// 对象

else if (libra.isObject(item)) {

for (var propName in item) {

var objNameParam = "";

if (objName) {

objNameParam = objName + "." + propName;

}

else {

objNameParam = propName;

}

serializeModelCore(result, objNameParam, item[propName]);

}

}

// 值

else {

result.value += string.format("{0}={1}&", objName, item);

}

}

67d0865f17d9be527254bf8a8ff6c5b4.gif

调用方法:

ed388d93d9101b88d05f28d2b5db4367.png

这是新方法传过来的值:

tag=first&p.name=yuxiang&p.age=22

42cf188afe579cb65811849cb5833b00.png

搞定,大家有什么好的做法,欢迎交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值