json构建格式? 我在html页面想构建json数据类型,里面有三个字段,请问如何用jquery构建好能被json解析的格式字符串(三个自字段) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var s = {"uid":1,"username":"zhangsan","age":20}; var obj={'a':'a','b':'b','c':'c'};alert(obj.a); 我说一下我的思路把 ~我现在页面有5条数据,是有ul构建的,里面有三条字段,我现在想通过jquery构建好json格式,通过ajax发送到一般处理程序中,在通过解析拿出数据,做更新。现在就是如何循环构建5条数据里面三个字段构建的json格式?? var json = {items:[{字段1:"",字段2:"",子段3:""},{字段1:"",字段2:"",子段3:""},{字段1:"",字段2:"",子段3:""}]};这个json是一个数组,可以放多组这种{字段1:"",字段2:"",子段3:""}数据var jsonObject = eval("("+json +")");取的话可以: for(var i = 0; i<jsonObject.items.length;i++) { var node = items[i]; var 字段1 = node.子段1; ..... } var jsonObject= {items:[]};jsonObject.items.push({id:值, name:值,sex:值});这样可以很方便的循环组装 不管你是从哪儿读取的都应该有你自己的格式 你按照这个格式来构造和读取就可以了啊! 我理解的是你要把json传到handler中去,通过程序读值。如果是这样的话建议使用xml传值,在程序中用xmldocument可以很方便的处理.如果你硬要用json的话会很麻烦(1,正则匹配2。反射成XML或实体对象) 是的,我就是要把json传到handler中去,通过程序读值,这样很麻烦吗??要是构建xml格式的话,页面应该如何构建呢? 给你看个列子吧 for(var i in this.selectedCHK) { orderList += "<items><officeToolId>"+this.selectedCHK[i].id+"</officeToolId><officeNum>"+this.selectedCHK[i].value+"</officeNum></items>"; }this.selectedCHK是一个对象数租 可以换成你从页面读出来的数据,这样就构造好了XML字符串,把它传到程序中后你用new一个XMLDOCUMENT对象用它的LOADXML方法就可以任意操作你需要的数据了 那我在页面传过去的格式是还是字符串格式把!在handle里面用什么类型数据接受啊? 个人感觉用JSON方便些,XML应用在后台要写的代码太多了,通过AJAX传到后台后,数据量大的话用POST,根据后台语言把需要的数据解析出来!如果传值给前台也是一样的,先在后台把数据组合成JSON格式,再传回给前台! 你发过去的数据一定要组成JSON格式的吗??你也可以自己组合,只要方便你后台解析就可以了!后台数据发到前台的时候,为了方便JS处理,才组合成JSON格式的! 简单的可以到http://json.org去下载json2.js然后引入到页面,之后把你要处理的数据存到对象或数组中之后 var json_data = JSON.stringify(Object)然后这个json_data变量就是你所要的json格式了传到后台后,如果是php,则用$json_data = json_decode($_POST['xxx']);之后就可以使用$json_data->xxx这样的格式来访问数据如果是php后台传递到前台则使用$data['abc'] = xxx;$data['tab_arr'] = array(4,6,8,3);echo json_encode($data); //一般用json是在AJAX应用上吧??所以这里直接用echo了传递到前台后,用var json_data = eval("(" + xmlHttpRequest.responseText + ")");然后就可以像下面这样来访问数据alert(json_data['abc']);for(var i = 0; i < json_data['tab_arr'].length; i++) { alert(json_data['tab_arr'][i]);} 如果不想用json2.js 或者数据比较简单,不需要用到json2.js(数据简单还调用这js库的话,就有点大材小用了,再者json格式要创建也是挺简单的,如果熟悉后,根本就不需要json2.js了)自己创建json格式var num = document.getElementById("num").value; // 数字格式var str = document.getElementById("str").value; // 字符串格式var tb = document.getElementById("tab").tBodies[0].rows;var json_data = "{\"num\":" + num + ",\"str\":\"" + encodeURIComponent(str) + "\",\"obj\":{\"numVal\":3,\"strVal\":\"string\",\"arrVal\":[[3,6],[7,2]],\"objVal\":{\"xxx\":123}}";if(tb.length > 0) { json_data += ",\"tab\":["; for(var i = 0; i < tb.length; i++) { json_data += "[" + parseInt(tb[i].cells[0].firstChild.value, 10) + "," + parseInt(tb[i].cells[1].firstChild.value, 10) + "],"; } json_data = json_data.substring(0, (json_data.length - 1)); //删除字符串最后的,符号 json_data += "]}";} else { json_data += "}";}最后json_data就是一个字符串,类似这样json_data = "{\"num\":1,\"str\":\"%E4%B8%AD%E6%96%87\",\"obj\":{\"numVal\":3,\"strVal\":\"string\",\"arrVal\":[[3,6],[7,2]],\"objVal\":{\"xxx\":123}},\"tab\":[[3,7],[5,76]]}";直接把这字符串传递到后台var post_data = "post_data=" + json_data;xmlHttpRequest.open("POST", url, true);xmlHttpRequest.setRequestHeader("Content-Length", post_data.length);xmlHttpRequest.setRequestHeader("Cache-Control", "no-cache");xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");xmlHttpRequest.send(post_data);后台用json_decode函数来反序列就行了$data = json_decode($_POST['post_data']);$data对象的结构如下$datastdClass Object( [num] => 1 [str] => 中文 [obj] => stdClass Object ( [numVal] => 3 [strVal] => string [arrVal] => Array ( [0] => Array ( [0] => 3 [1] => 6 ) [1] => Array ( [0] => 7 [1] => 2 ) ) [objVal] => stdClass Object ( [xxx] => 123 ) ) [tab] => Array ( [0] => Array ( [0] => 3 [1] => 7 ) [1] => Array ( [0] => 5 [1] => 76 ) )) http://dev2dev.weblogicfans.net/techdoc/2007/03/java-soa-introduction-json.html看下去 你就轻松地掌握啦 CHROME 子窗口 无法返回值 小弟不才 还有一个问题, 帮帮忙 谢谢 急,alert窗口,怎么在弹出该alert窗口的那个页面的后面显示? 请问:页面弹出层中如何展示通过js生成的树_____分不多,请见谅 为什么这样就能 刷新后保存信息????这句话啥意思???? ff下div失去焦点无效果? 模态对话框的刷新问题,急,急得尿血。在线等...小女子以身相许 日期存入文本框问题 替换问题 JQuery1.10支持css3吗 关于window.open的问题 javascript一个正则表达式问题
alert(obj.a);
这个json是一个数组,可以放多组这种{字段1:"",字段2:"",子段3:""}数据
var jsonObject = eval("("+json +")");
取的话可以: for(var i = 0; i<jsonObject.items.length;i++)
{
var node = items[i];
var 字段1 = node.子段1;
.....
}
jsonObject.items.push({id:值, name:值,sex:值});
这样可以很方便的循环组装
是的,我就是要把json传到handler中去,通过程序读值,这样很麻烦吗??要是构建xml格式的话,页面应该如何构建呢?
for(var i in this.selectedCHK)
{
orderList += "<items><officeToolId>"+this.selectedCHK[i].id+"</officeToolId><officeNum>"+this.selectedCHK[i].value+"</officeNum></items>";
}this.selectedCHK是一个对象数租 可以换成你从页面读出来的数据,这样就构造好了XML字符串,把它传到程序中后你用new一个XMLDOCUMENT对象用它的LOADXML方法就可以任意操作你需要的数据了
那我在页面传过去的格式是还是字符串格式把!在handle里面用什么类型数据接受啊?
后台数据发到前台的时候,为了方便JS处理,才组合成JSON格式的!
然后引入到页面,之后把你要处理的数据存到对象或数组中
之后 var json_data = JSON.stringify(Object)
然后这个json_data变量就是你所要的json格式了
传到后台后,如果是php,则用
$json_data = json_decode($_POST['xxx']);
之后就可以使用
$json_data->xxx
这样的格式来访问数据
如果是php后台传递到前台
则使用
$data['abc'] = xxx;
$data['tab_arr'] = array(4,6,8,3);
echo json_encode($data); //一般用json是在AJAX应用上吧??所以这里直接用echo了
传递到前台后,用
var json_data = eval("(" + xmlHttpRequest.responseText + ")");
然后就可以像下面这样来访问数据
alert(json_data['abc']);
for(var i = 0; i < json_data['tab_arr'].length; i++) {
alert(json_data['tab_arr'][i]);
}
var num = document.getElementById("num").value; // 数字格式
var str = document.getElementById("str").value; // 字符串格式
var tb = document.getElementById("tab").tBodies[0].rows;
var json_data = "{\"num\":" + num + ",\"str\":\"" + encodeURIComponent(str) + "\",\"obj\":{\"numVal\":3,\"strVal\":\"string\",\"arrVal\":[[3,6],[7,2]],\"objVal\":{\"xxx\":123}}";
if(tb.length > 0) {
json_data += ",\"tab\":[";
for(var i = 0; i < tb.length; i++) {
json_data += "[" + parseInt(tb[i].cells[0].firstChild.value, 10) + "," + parseInt(tb[i].cells[1].firstChild.value, 10) + "],";
}
json_data = json_data.substring(0, (json_data.length - 1)); //删除字符串最后的,符号
json_data += "]}";
} else {
json_data += "}";
}
最后json_data就是一个字符串,类似这样
json_data = "{\"num\":1,\"str\":\"%E4%B8%AD%E6%96%87\",\"obj\":{\"numVal\":3,\"strVal\":\"string\",\"arrVal\":[[3,6],[7,2]],\"objVal\":{\"xxx\":123}},\"tab\":[[3,7],[5,76]]}";直接把这字符串传递到后台
var post_data = "post_data=" + json_data;
xmlHttpRequest.open("POST", url, true);
xmlHttpRequest.setRequestHeader("Content-Length", post_data.length);
xmlHttpRequest.setRequestHeader("Cache-Control", "no-cache");
xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xmlHttpRequest.send(post_data);后台用json_decode函数来反序列就行了
$data = json_decode($_POST['post_data']);
$data对象的结构如下$data
stdClass Object
(
[num] => 1
[str] => 中文
[obj] => stdClass Object
(
[numVal] => 3
[strVal] => string
[arrVal] => Array
(
[0] => Array
(
[0] => 3
[1] => 6
)
[1] => Array
(
[0] => 7
[1] => 2
)
)
[objVal] => stdClass Object
(
[xxx] => 123
) )
[tab] => Array
(
[0] => Array
(
[0] => 3
[1] => 7
)
[1] => Array
(
[0] => 5
[1] => 76
)
)
)
看下去 你就轻松地掌握啦