请问如何用jquery生产面向对象的json格式?

发布于 2021-11-27 09:22:33 字数 2752 浏览 662 评论 6


$.fn.serializeObject = function() {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name]) {
                if (!o[this.name].push) {
                    o[this.name] = [ o[this.name] ];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };
 
    function onchang() {
        //var v = $("#form1").serializeObject();
        var v = $("#form1").serializeObject();
        var sjson = JSON.stringify(v);
        //alert(sjson);
        //$("p").append(sjson);
        $.ajax({
            type : "post",
            //data:{"username":"username","password":"password"},
            //data:{"jsonString":'{"username":"username","password":"password"}'},
            data : {
                "jsonString" : sjson
            },
 
            //data : {test:test,username:userDao5,password:userDao},
 
            //data: sjson,
            url : "Batch_batchChangAll.action",
            dataType : "JSON",
            success : alert("发送成功")
        });
 
    }

请问jquery如何生成如下格式的json?

{[

   {username:"user1", password:"123456", charname:"nickname1"},
   {username:"user2", password:"123456", charname:"nickname2"},
   {username:"user3", password:"123456", charname:"nickname3"},
]}



如果用第一段代码生产出来的json格式:

{"username":["1","2"],"password":["1","2"],"charaname":["1","2"]}


form表达代码如下:

	<form id="form1">
		<table>
			<tr>
				<th>编号</th>
				<th>用户帐号</th>
				<th>用户密码</th>
				<th>用户角色</th>
			</tr>
			<c:forEach var="allusers" items="${allUsers}" varStatus="status">
								<tr>
					<td><c:out value="${allusers.id}" /></td>
					<td><input type="text"
						name="username"
						value="${allusers.username}" /></td>
					<td><input type="text"
						name="password"
						value="${allusers.password}" /></td>
					<td><input type="text"
						name="charaname"
						value="${allusers.charaname}" /></td>

				</tr>
	
			</c:forEach>
		</table>
	</form>
	<input type="submit" value="确定修改" id="subchang" onclick="onchang()" />






如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

霞映澄塘 2021-12-02 06:40:55

引用来自“wuyiw”的评论

首先...{[...]}这个不是正确的json格式吧...

其次...你这样的写法应该会漏掉第一组数据吧...

最后...试试这个...

$.fn.serializeObject = function() {
  var objArr = [], modelIndex = {
    username: 0,
    password: 0,
    charname: 0
  }, i;
  var a = this.serializeArray();
  $.each(a, function() {
    if (modelIndex.hasOwnProperty(this.name)) {
      i = modelIndex[this.name]++
      (objArr[i] = objArr[i] || {})[this.name] = this.value
    }
  });
  return objArr;
};
最偏执的依靠 2021-12-02 05:36:35

首先...{[...]}这个不是正确的json格式吧...

其次...你这样的写法应该会漏掉第一组数据吧...

最后...试试这个...

$.fn.serializeObject = function() {
  var objArr = [], modelIndex = {
    username: 0,
    password: 0,
    charname: 0
  }, i;
  var a = this.serializeArray();
  $.each(a, function() {
    if (modelIndex.hasOwnProperty(this.name)) {
      i = modelIndex[this.name]++
      (objArr[i] = objArr[i] || {})[this.name] = this.value
    }
  });
  return objArr;
};
无声静候 2021-12-02 05:13:57

格式不好看

白龙吟 2021-12-02 02:20:49

回复
能用就行了, 还要好看?

看透却不说透 2021-11-29 22:44:23

回复
我想用面向对象的格式,这样后端用fastjson接收比较方便。

深巷少女 2021-11-27 20:14:08

jquery 不是有serialize吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文