2012-02-29 5 views
3

Я получаю сообщение «DataTables: данные JSON с сервера не могут быть проанализированы. Это вызвано ошибкой форматирования JSON« Я знаю, что это может быть дубликат других потоков, я используя java и dataTables в моем коде .. Я получаю вывод в формате JSON, но его не распознают на стороне клиента во время печати.Не удалось разобрать данные JSON с сервера

Когда я проверил объект JSON в http://jsonlint.com/, он находится в правильном формате. Я не уверен, что вызывает эту ошибку.

{ "iTotalRecords": 5, "sEcho": "1", "aaData": [[ "V2993ASFKH230943", "Хонда", "Согласие"], [ "V2993A39SNF30943", "Хонда",» CRV "], [" V4833A39SNF30943" , "Acura", "TSX"], [ "V4833RE9SNF30943", "Acura", "TL"], [ "V9383RE9SNF30943", "Acura", "MDX"]], "iTotalDisplayRecords" : 5}

Любая помощь была бы действительно оценена.

Благодаря

EDIT

try { 
      JSONObject jsonResponse = new JSONObject(); 

      jsonResponse.put("sEcho", sEcho); 
      jsonResponse.put("iTotalRecords", iTotalRecords); 
      jsonResponse.put("iTotalDisplayRecords", iTotalDisplayRecords); 

      while (itr.hasNext()) { 
       Map rs = (Map) itr.next(); 
       FleetEquipment eqpmt = new FleetEquipment(); 
       eqpmt.setVinNumber((String) rs.get("VIN_ID")); 
       eqpmt.setMake((String) rs.get("MAKE")); 
       eqpmt.setModel((String) rs.get("MODEL")); 
       JSONArray row = new JSONArray(); 
       row.put(eqpmt.getVinNumber()).put(eqpmt.getMake()) 
         .put(eqpmt.getModel()); 
       data.put(row); 

      } 

      jsonResponse.put("aaData", data); 

      response.setContentType("application/json"); 
      response.getWriter().print(jsonResponse.toString()); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      response.setContentType("text/html"); 
      response.getWriter().print(e.getMessage()); 
     } 

EDIT 1

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 

<portlet:defineObjects/> 

<portlet:resourceURL var="listURL" id="list" escapeXml="false"/> 
<script type="text/javascript"> 
$(document).ready(function() { 
      $('#listTable').dataTable({ 
       "bServerSide": true, 
       "sAjaxSource": "<%=listURL.toString()%>", 
       "bProcessing": true, 
       "sPaginationType": "full_numbers", 
       "bJQueryUI": true 
      }); 
     }); 

</script></head> 
<body> 

<table id="listTable"> 
    <thead> 
     <tr> 
      <th>VIN ID</th> 
      <th>MAKE</th> 
      <th>MODEL</th> 
      <th>MODEL1</th> 
      <th>Model2</th> 
     </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 
+0

Вы уверены, что с вашим вышеупомянутым JSON нет никаких дополнительных слов? Я имею в виду, как любые ошибки? – linuxeasy

+0

Да .. Я проверял ссылку, о которой я упомянул выше. – user525146

+0

Я понял, что вы подтвердили, но вы проверили его в firebug, что касается окончательного результата. было то, что выход Firebug сервера? Возможно, вы проверяете правильный json, но не принимаете его из окончательного вывода. Итак, вы взяли его из финального выхода, например, firefug? – linuxeasy

ответ

1
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n VIN ID MAKE MODEL "," 
status ":200," 
statusText ":" 
OK "}," 
fnServerData ":" 
function (e, j, l, k) {\n k.jqXHR = i.ajax({ 
     url: e, 
     data: j, 
     success: function (e) { 
      i(k.oInstance).trigger(\"xhr\", k);l(e);}, dataType: \"json\", cache: !1, type: k.sServerMethod, error: function (e, i) {\"parsererror\" == i && alert(\"DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.\");}});\n}", "aoServerParams": [], 
      "sServerMethod": "GET", 
      "fnFormatNumber": "function (e) {\n if (1000 > e) {\n return e;\n }\n for (var i = e + \"\", e = i.split(\"\"), j = \"\", i = i.length, l = 0; l < i; l++) {\n 0 === l % 3 &&\n 0 !== l && (j = this.oLanguage.sInfoThousands + j), j = e[i - l - 1] + j;\n }\n return j;\n}", 
      "aLengthMenu": [10, 25, 50, 100], 
      "iDraw": 1, 
      "bDrawing": true, 
      "iDrawError": -1, 
      "_iDisplayLength": 10, 
      "_iDisplayStart": 0, 
      "_iDisplayEnd": 0, 
      "_iRecordsTotal": 0, 
      "_iRecordsDisplay": 0, 
      "bJUI": true, 
      "oClasses": { 
       "sTable": "dataTable", 
       "sPagePrevEnabled": "fg-button ui-button ui-state-default ui-corner-left", 
       "sPagePrevDisabled": "fg-button ui-button ui-state-default ui-corner-left ui-state-disabled", 
       "sPageNextEnabled": "fg-button ui-button ui-state-default ui-corner-right", 
       "sPageNextDisabled": "fg-button ui-button ui-state-default ui-corner-right ui-state-disabled", 
       "sPageJUINext": "ui-icon ui-icon-circle-arrow-e", 
       "sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w", 
       "sPageButton": "fg-button ui-button ui-state-default", 
       "sPageButtonActive": "fg-button ui-button ui-state-default ui-state-disabled", 
       "sPageButtonStaticDisabled": "fg-button ui-button ui-state-default ui-state-disabled", 
       "sPageFirst": "first ui-corner-tl ui-corner-bl", 
       "sPagePrevious": "previous", 
       "sPageNext": "next", 
       "sPageLast": "last ui-corner-tr ui-corner-br", 
       "sStripeOdd": "odd", 
       "sStripeEven": "even", 
       "sRowEmpty": "dataTables_empty", 
       "sWrapper": "dataTables_wrapper", 
       "sFilter": "dataTables_filter", 
       "sInfo": "dataTables_info", 
       "sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_", 
       "sLength": "dataTables_length", 
       "sProcessing": "dataTables_processing", 
       "sSortAsc": "ui-state-default", 
       "sSortDesc": "ui-state-default", 
       "sSortable": "ui-state-default", 
       "sSortableAsc": "ui-state-default", 
       "sSortableDesc": "ui-state-default", 
       "sSortableNone": "ui-state-default", 
       "sSortColumn": "sorting_", 
       "sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n", 
       "sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s", 
       "sSortJUI": "css_right ui-icon ui-icon-carat-2-n-s", 
       "sSortJUIAscAllowed": "css_right ui-icon ui-icon-carat-1-n", 
       "sSortJUIDescAllowed": "css_right ui-icon ui-icon-carat-1-s", 
       "sSortJUIWrapper": "DataTables_sort_wrapper", 
       "sSortIcon": "DataTables_sort_icon", 
       "sScrollWrapper": "dataTables_scroll", 
       "sScrollHead": "dataTables_scrollHead ui-state-default", 
       "sScrollHeadInner": "dataTables_scrollHeadInner", 
       "sScrollBody": "dataTables_scrollBody", 
       "sScrollFoot": "dataTables_scrollFoot ui-state-default", 
       "sScrollFootInner": "dataTables_scrollFootInner", 
       "sFooterTH": "ui-state-default" 
      }, 
      "bFiltered": true, 
      "bSorted": true, 
      "bSortCellsTop": false, 
      "oInit": { 
       "bServerSide": true, 
       "sAjaxSource": "/wps/myportal/!ut/p/b1/hc09DoJAEIbhs3CCGX5kl3IRdVGiolFkG7Mho2IQEkAKTy8aGwt0ukmeLy8oSE3PctAeWY4LB1Cl7vKzbvOq1MXrV-6RBz73fVMg9-QUw0j6bCLmiGj2IO3BeCakwyJEPuImhkLumLsNLBT2v30C6psgrlhP7Jlki72Fof0BvxJvgAMnEJayulGfShUbDMUISU1Nda8zgs2pIGqjvGkhznR2oYg6Ktb6THBThRde2UMIw3gC131G1Q!!/", 
       "bProcessing": true, 
       "sPaginationType": "full_numbers", 
       "bJQueryUI": true 
      }, 
      "aoDestroyCallback": [], 
      "fnRecordsTotal": "function() {\n return this.oFeatures.bServerSide ? parseInt(this._iRecordsTotal, 10) : this.aiDisplayMaster.length;\n}", 
      "fnRecordsDisplay": "function() {\n return this.oFeatures.bServerSide ? parseInt(this._iRecordsDisplay, 10) : this.aiDisplay.length;\n}", 
      "fnDisplayEnd": "function() {\n return this.oFeatures.bServerSide ? !1 === this.oFeatures.bPaginate || - 1 == this._iDisplayLength ? this._iDisplayStart + this.aiDisplay.length : Math.min(this._iDisplayStart + this._iDisplayLength, this._iRecordsDisplay) : this._iDisplayEnd;\n}", 
      "sInstance": "fleetList", 
      "iTabIndex": 0, 
      "fnStateLoad": "function (e) {\n var e = this.oApi._fnReadCookie(e.sCookiePrefix + e.sInstance), j;\n try {\n j = \"function\" === typeof i.parseJSON ? i.parseJSON(e) : eval(\"(\" + e + \")\");\n } catch (l) {\n j = null;\n }\n return j;\n}", 
      "fnStateSave": "function (e, i) {\n this.oApi._fnCreateCookie(e.sCookiePrefix + e.sInstance, this.oApi._fnJsonString(i), e.iCookieDuration, e.sCookiePrefix, e.fnCookieCallback);\n}", 
      "iInitDisplayStart": -1, 
      "nTableReinsertBefore": null 
      }], 
     "tablesDisplayData": [ 
      [] 
     ], 
     "tablesDisplayExtra": [ 
      [] 
     ] 
    } 
    }; 
+1

Hah - он разбивает отладчик DataTables! Doh. В любом случае, мне кажется, что ваш ответ JSON включает в себя такие вещи, как «script src = \» C: \\ workspaces \\ WP1 \\ SpringPortlet \\ WebContent \\ jquery.dataTables.js \ ", который недействителен json. посмотрите на ответ в Firebug - у него есть контент, который не является JSON (есть JSON, но есть и другие вещи). –

+0

Я удалил этот скрипт src со страницы jsp, и кроме того, что ответ JSON у меня есть dataTables, а также таблицу в ответе. – user525146

+0

Посмотрите на этот пример, чтобы увидеть ожидаемый ответ: http://datatables.net/release-datatables/examples/data_sources/server_side.html - функция DataTables и таблица в ответе не ожидается - просто данные для таблицы. –

2

enter image description here[Не ответ на этот вопрос, однако вход инструмент]

http://jsonviewer.stack.hu/

Этот инструмент действительно помогает понять структуру внешнего объекта JSON. Это, возможно, не ответ на ваш вопрос, однако, это помогает мне понять и хорошо разбираться с кодом на Python, и это тоже проверяет JSON.

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