grails 컨트롤러에서 jQuery 데이터 테이블 (v 1.9)에 JSON 응답을 보내려고했지만 응답이 없습니다. 여기 grails 컨트롤러에서 jQuery 데이터 테이블로 JSON 응답을 보낼 수 없습니다.
내 컨트롤러입니다 : -def breakHierarchy =
{
logger.info("breakHierarchy begins here");
userObject = session.myBeanU;
userLoggedIn = userStatus.checkUserLoggedIn(userObject);
ArrayList<HierarchyBreakBean> mappingList;
JsonObject jsonResponse;
if(userLoggedIn) {
def hierarchyBreakInstance = new HierarchyBreak(params);
String[] divisionList = params.searsDivNumber;
String[] lineList = params.searsLineNumber;
String[] sublineList = params.searsSubLineNumber;
String[] classList = params.searsClass;
try {
mappingList = hierarchyBreakService.searchHierarchy(divisionList, lineList, sublineList, classList);
jsonResponse = hierarchyBreakService.loadData(request, response, mappingList);
} catch(Exception ex){
logger.info("Exception in breakHierarchy: ");
ex.printStackTrace();
hierarchyBreakInstance.errors.reject(message(code: ex.toString()));
render(view: "hierarchyBreak", model: [hierarchyBreakInstance: hierarchyBreakInstance]);
return;
}
} else {
redirect(action: loginError);
}
return;
}
이 서비스의 방법 loadData() : -
try {
JsonObject jsonResponse = new JsonObject();
jsonResponse.addProperty("sEcho", sEcho);
jsonResponse.addProperty("iTotalRecords", iTotalRecords);
jsonResponse.addProperty("iTotalDisplayRecords", iTotalDisplayRecords);
Iterator<HierarchyBreakBean> it = list.iterator();
while(it.hasNext()){
JsonArray row = new JsonArray();
record = it.next();
row.add(new JsonPrimitive("<input type='checkbox' class='singleSelect' id='item' name='item' value='' />"));
row.add(new JsonPrimitive(record.getSearsCategoryNumber()));
row.add(new JsonPrimitive(record.getSearsBusNumber()));
row.add(new JsonPrimitive(record.getSearsDivNumber()));
row.add(new JsonPrimitive(record.getSearsLineNumber()));
row.add(new JsonPrimitive(record.getSearsSublineNumber()));
row.add(new JsonPrimitive(record.getSearsClassNumber()));
row.add(new JsonPrimitive(record.getKmartDivNumber()));
row.add(new JsonPrimitive(record.getKmartDeptNumber()));
row.add(new JsonPrimitive(record.getKmartCatGroupNumber()));
row.add(new JsonPrimitive(record.getKmartCatgNumber()));
row.add(new JsonPrimitive(record.getKmartSubCatgNumber()));
row.add(new JsonPrimitive(record.getOrderSystem()));
row.add(new JsonPrimitive(record.getSearskmartOrderSystemCode()));
data.add(row);
}
jsonResponse.add("aaData", data);
response.setContentType("application/Json");
response.getWriter().print(jsonResponse);
return jsonResponse;
} catch (Exception e) {
e.printStackTrace();
}
이것은 내가 사용하고있어 JS입니다 : -
var myTable = null;
$("#searchButton").click(function(){
var url = appcontextPath + "/login/breakHierarchy";
$("#row_header").show();
myTable = $("#mappingTable").dataTable({"bServerSide": true,
"bProcessing": true,
"sAjaxSource": url,
"sPaginationType": "full_numbers",
"bJQueryUI": true,
"bDestroy": true,
"aaSorting": [[4,'asc']],
"bFilter": false,
"aoColumnDefs": [{"sWidth": "20%", "aTargets": [1,2,3,4,5], "sClass": "center"},
{"bSortable": false, "aTargets": [0]}]
});
});
"처리 중"표시 줄에 데이터 테이블이 비어있는 것으로 표시됩니다. 아무도 내가 여기에서 무엇을 놓치고 있는지 말해 줄 수 있습니까? 어떤 도움이라도 대단히 감사 할 것입니다. 감사!
JS 콘솔에 약간의 오류가있을 수 있습니다. – injecteer
컨트롤러에서'render jsonResponse'를 보지 못했습니다. – dsharew
@injecteer 내 JS 콘솔은 깨끗합니다. –