2012-02-29 20 views
3

"DataTables警告:サーバーからのJSONデータを解析できませんでした。これはJSONフォーマットエラー" によって発生します。これは他のスレッドと重複している可能性があります。私のコードではjavaとdataTablesを使用しています。JSON形式で出力していますが、印刷中にクライアント側で認識されません。サーバーからのJSONデータを解析できませんでした

http://jsonlint.com/でJSONオブジェクトを検証したとき、正しい形式です。このエラーの原因は何か分かりません。

{ "iTotalRecords":5、 "sEcho": "1"、 "aaData":[[ "V2993ASFKH230943"、 "ホンダ"、 "アコード"]、[ "V2993A39SNF30943"、 "ホンダ"、」 「Acura」、「TSX」、「V4833RE9SNF30943」、「Acura」、「TL」、「V9383RE9SNF30943」、「Acura」、「MDX」]、「iTotalDisplayRecords」、「CRV」、「V4833A39SNF30943」、 :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

私はあなたが確認したことを理解しましたが、火かき棒でそれをチェックしましたか?最終結果は何ですか?それはサーバーの火かき棒出力でしたか?あなたは正しいjsonを確認しているかもしれませんが、最終的な出力からは取り出されません。だから、あなたはファイナル・アウトプットから取ったのですか? – 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

jspページからそのスクリプトsrcを削除しました。 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バリデータも同様です。

関連する問題