2015-05-27 2 views
0

Я работаю над датируемый, что заселить данные стороне сервера, проблема я столкнулся в том, что он всегда дает окно с предупреждением, которое показываетява сторона DataTable сервер вопрос

DataTables предупреждение: таблица ID = firmtable - Запрошенный неизвестный параметр «1» для строки 0. для получения дополнительной информации об этой ошибке, пожалуйста, см http://datatables.net/tn/4 я не в состоянии проследить, где этот вопрос может быть

мой

JSON
{ 
    "sEcho":"3", 
    "iTotalRecords":10, 
    "iTotalDisplayRecords":10, 
    "aaData": 
     "[ 
      {\"LogId\":\"108\", 
      \"tableName \":\"game\", 
      \"columnName\":\"Status\", 
      \"oldValue\":\"0\", 
      \"newValue\":\"1\", 
      \"changeTypeText\":\"Update \", 
      \"changedByName\":\"abc\"} 
     ]" 
} 

это, как я работал его на стороне сервера

Iterator<LogInfo> i = logList.iterator(); 
int row = 0; 
JsonObject returnObj = new JsonObject(); 
JsonArray dataArray = new JsonArray(); 
while (i.hasNext()) { 
    LogInfo logInfo = (LogInfo) i.next(); 
    JsonObject jsonObject = new JsonObject(); 
    jsonObject.addProperty("logId", logInfo.getLogId()); 
    jsonObject.addProperty("tableName", logInfo.getTableName()); 
    jsonObject.addProperty("columnName", logInfo.getColumnName()); 
    jsonObject.addProperty("oldValue", logInfo.getOldValue()); 
    jsonObject.addProperty("newValue", logInfo.getNewValue()); 
    jsonObject.addProperty("changeTypeText", logInfo.getChangeTypeText()); 
    jsonObject.addProperty("changedByName", logInfo.getChangedByName()); 
    row++; 
    dataArray.add(jsonObject.getAsJsonObject()); 
    } 
returnObj.addProperty("sEcho", "3"); 
returnObj.addProperty("iTotalRecords", row); 
returnObj.addProperty("iTotalDisplayRecords", row); 
returnObj.addProperty("aaData", dataArray.toString()); 
PrintWriter out = response.getWriter(); 
Gson gson = null; 
GsonBuilder builder = new GsonBuilder(); 
builder.setDateFormat(JarolConstants.AJAX_DATE_FORMAT); 
gson = builder.create(); 
String resultStr = gson.toJson(returnObj); 
out.print(resultStr); 
out.close(); 

Что происходит на стороне клиента, что туЬаЫе не получает заселенной HTML код

скрипт

 $(document).ready(function() { 
     $('#firmtable').dataTable({ 
      "bProcessing" : true, 
      bServerSide : true, 
      sAjaxSource : "./log!list.action", 
      sServerMethod : "POST" 
     }); 
    }); </script> 


<table id="firmtable"> 
       <thead> 
        <tr class="detail"> 
         <th><s:property value="getText('auditLog.jsp.transactionId')" /></th> 
         <th><s:property value="getText('auditLog.jsp.tableName')" /></th> 
         <th><s:property value="getText('auditLog.jsp.columnName')" /></th> 
         <th><s:property value="getText('auditLog.jsp.oldValue')" /></th> 
         <th><s:property value="getText('auditLog.jsp.newValue')" /></th> 
         <th><s:property value="getText('auditLog.jsp.changeTypeId')" /></th> 
         <th><s:property value="getText('auditLog.jsp.changeBy')" /></th> 
         <th><s:property value="getText('auditLog.jsp.changeOn')" /></th> 
         <th class="edit"><s:property value="getText('global.action')" /></th> 
        </tr> 
       </thead> 
       <tbody> 
       </tbody> 
      </table> 

РЕДАКТИРОВАТЬ я также попытался установить его в

returnObj.addProperty ("sEcho", Integer.parseInt (request.getParameter ("sEcho"))) значение sEcho;

, но никакого результата, тот же вопрос я не подвожу

какой результат я получаю это таблица первая колонка получает заполняется с содержанием aaData как этот

[ { L о г I d т.е. одна буква в первой колонке

ответ

0

моя проблема решена нескольких вещей, которые я изменил я использовал com.google.gson.Gson для JSON теперь я использую org.json которая решается вопрос о \ в моих aaData тогда я использовал новую версию DataTable и добавил jsonObject.put("DT_RowId", row); к моему aaData теперь мой JSON выглядит следующим образом

{ 
    "recordTotal":10, 
    "draw":"3", 
    "recordsFiltered":10, 
    "data":[ 
     { 
     "LogId":"112", 
     "changeTypeText":"Update", 
     "changedOn":"2015-05-27 18:05:43.113", 
     "newValue":"1000.00", 
     "changedByName":"Lalit Singh1", 
     "tableName":"Game", 
     "DT_RowId":0, 
     "columnName":"jackpot_Amount", 
     "oldValue":"1500.00" 
     }] 

и в JavaScript коде я добавил

$('#LogTable').dataTable({ 
    "bProcessing" : true, 
    bServerSide : true, 
    sAjaxSource : "./log!lList.action", 
    sServerMethod : "POST", 
    "columns": [ 
     { "data": "LogId" }, 
     { "data": "tableName" }, 
     { "data": "columnName" }, 
     { "data": "oldValue" }, 
     { "data": "newValue" }, 
     { "data": "changeTypeText" }, 
     { "data": "changedByName" }, 
     { "data": "changedOn" }, 
    ] 
}); 
0

Установите значение sEcho тому, которое вы получили по запросу.

+0

У меня есть это для этого returnObj.addProperty («sEcho», Integer.parseInt (request.getParameter («sEcho»))); но все тот же вопрос – Complicated

+0

Не пытайтесь разобрать целое число. –

+0

nope same issue .. – Complicated

2

Какая версия Информационных таблиц вы используете? Эти поля устарели в новых версиях.

Посмотрите на API document.

Поля теперь называет «рисовать», «recordsTotal», «recordsFiltered» и «данные»

Кроме того, я не могу говорить более старые версии, но в настоящее время API, кажется, требует для обеспечения JSON массивом массивов для объекта данных, а не массивом объектов, как у вас сейчас.

Try, чтобы увидеть, если у вас есть больше успеха с обеспечением что-то вроде

"aaData": [ 
    [ 
     "108", 
     "game", 
     "Status", 
     "0", 
     "1", 
     "Update", 
     "abc" 
    ], 
    [ 
     "109", 
     "anothergame", 
     "Status", 
     "0", 
     "1", 
     "Update", 
     "abcd" 
    ], 
    ... 
] 

Кроме того, ваша ничья/sEcho должно быть значение, полученное с помощью Ajax запроса, не является постоянной. В противном случае DataTables не позволит вам фильтровать/странично на сервере.

+0

его пример php, я работаю над java ... https://www.datatables.net/examples/server_side/simple.html .. Я следую этому примеру прямо сейчас .. и для datatable версии .. wait, я бы сказал вам. Я пытаюсь преобразовать его в массив массивов для объекта данных, возможно, он решает мою проблему – Complicated

Смежные вопросы