Я пытаюсь отправить ответ JSON от контроллера grails для отображения в jQuery datatable (v 1.9), но я получаю нулевой ответ.Невозможно отправить ответ JSON от контроллера grails в jQuery datatable
Вот мой контроллер: -
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]}]
});
});
Данные типа datatable отображаются пустым с помощью панели «Обработка». Может ли кто-нибудь сказать мне, что мне здесь не хватает? Любая помощь приветствуется. Благодаря!
Должны быть ошибки в JS-консоли – injecteer
Я не видел 'render jsonResponse' в вашем контроллере; – dsharew
@ injecteer Моя консоль JS чиста –