easyui datagrid 接收到后台的json数据却不显示 console.log()可以输出value
后台代码
response.setContentType("application/json");
PrintWriter out = response.getWriter();
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map2 = new HashMap<String, Object>();
String name ="limengzhou";
map.put("name", name);
map2.put("name", "lalalalal");
//转换成json数据
JSONArray jsonData = new JSONArray();
jsonData.fluentAdd(map);
jsonData.fluentAdd(map2);
String json = jsonData.toJSONString();
System.out.println(jsonData);
out.println(jsonData);
out.flush();
out.close();
前端代码
$("#datagrid").datagrid({
url:'Login1',
title:'信息a',
iconCls:'icon-save',
loadFilter: function(data){
console.log("aaaaa")
console.log(data[0].name)
console.log(data[1].name)
if (data.name){
return data;
} else {
return data;
}
},
columns:[[ {field:'name',title:'姓名',width:100,}]],
数据可以正常console.log
下图


参考GPT和自己的思路:
根据您提供的代码和问题描述,可能是前端代码中 loadFilter 函数的问题。在该函数中,您的判断条件 if (data.name)
是错误的,因为 data 是一个数组,而不是一个对象,因此无法直接访问 data.name。正确的判断条件应该是 if (data && data.length > 0)
。建议您修改前端代码,如下所示:
$("#datagrid").datagrid({
url:'Login1',
title:'信息a',
iconCls:'icon-save',
loadFilter: function(data){
console.log("aaaaa")
console.log(data[0].name)
console.log(data[1].name)
if (data && data.length > 0){
return data;
} else {
return [];
}
},
columns:[[ {field:'name',title:'姓名',width:100,}]],
});
这样修改之后,应该能够正确显示数据了。如果您还有其他问题,请随时提问,我会尽力解答。