1、以前倒是没有怎没遇到过需要后台解析的,由于json传到后台实际上是传的一个字符串通常用到批量删除时
var rows = $('#tt').datagrid('getSelections');
var size = rows.length;
var ids = "";
for(var i = 0; i < size; i ++){
ids += rows[i].id + ",";//将id添加到数组中
}
if(ids != ""){
$.messager.confirm('确认', '你确定要删除这些数据吗?', function(r){
if (r){
// exit action;
var params = {'ids':ids};
$.ajax({
type:"POST",
url:"roleses/delete",
data:params,
success:function(datas){
var data = JSON.parse(datas);
$.messager.show({
title:'提示',
msg:data.msg,
timeout:5000,
});
然后传给后台的String ids与其映射对应传值
public void deletePower(String ids,PrintWriter out) {
String [] st=ids.split(",");
Integer[] idss=new Integer[st.length];通过这两步解析出来
}
但是如果遇到传过来的是个对象有很多属性呢方法如下:
menuData=[]
for(var i=0;i<row;i++){
var menu={"id":selected[i].id,//传了id、fk_roles_id、state三个值
"fk_roles_id":rows[0].id,
"state":1
}
menuData.push(menu)
}
for(var i=0;i<nodes.length;i++){
var mehe={"id":nodes[i].id,
"fk_roles_id":rows[0].id,
"state":1
}
menuData.push(mehe)
}
var aToStr=JSON.stringify(menuData);//json必须通过这步转换成String格式了才能传过去
$.ajax({
type:"POST",
url:"powerroles/updata",
data:{'menuData':aToStr},
dataType: "json",
success:function(datas){
$.messager.show({
title:'提示',
msg:datas.msg,
timeout:5000,
});
}
})
后台:
public void updatePowerRoles(String menuData, PrintWriter out){
Messager message=new Messager(true, "成功修改", null);
JSONArray jsonArray = JSONArray.fromObject(menuData);
Integer[] integers=new Integer[jsonArray.size()];
JSONObject jsonobject2 = null;
for(int i=0;i<jsonArray.size();i++){
jsonobject2=jsonArray.getJSONObject(i);
integers[i]=jsonobject2.getInt("id");
}
Integer in=jsonobject2.getInt("fk_roles_id");
}//不过记着下关于JSONArray的jar包