2017-10-20 18 views
0

J'utilise coldFusion 2016 et je suis confronté à un problème lorsque je mets des données json dans ma base de données Jquery. Le datatable montre seulement le message de traitement. Le résultat JSON semble être sans erreur, mais je ne sais pas quel est le problème.Problème lors du remplissage des données JSON vers Jquery datatable dans ColdFusion

Voici mon implémentation datatable

<head> 
 
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
 
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script> 
 
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet"> 
 

 
<script type="text/javascript"> 
 
var table = ''; 
 
$(document).ready(function() { 
 
    table = $('#example').DataTable({ 
 
\t  "bProcessing": true, 
 
     "bServerSide": true, 
 
\t \t "ajax": "uploadProcess.cfc?method=getDetails&partyId=100004", 
 
\t \t "sPaginationType": "full_numbers", 
 
\t \t "oLanguage": { 
 
\t \t \t \t "sProcessing": "Wait please...", 
 
\t \t \t \t "sZeroRecords": "No records found.", 
 
\t \t \t \t "sInfo":   "Users from _START_ to _END_ of _TOTAL_ total", 
 
\t \t \t  "sInfoEmpty": "Users from 0 to 0 of 0 total" 
 
\t \t \t \t }, 
 
\t \t "aoColumns": [ 
 
         { "data": "ID" }, 
 
         { "data": "ORG_NAME" }, 
 
         { "data": "TYPE" }, 
 
         { "data": "PATH" }, 
 
         { "data": "URL" }, 
 
         { "data": "DELETE" } 
 
        ] 
 
    }); 
 
}); 
 
</script> 
 
</head> 
 
<body> 
 
<div id="dataDiv"> 
 
<table id="example" class="display" cellspacing="0" width="100%"> 
 
     <thead> 
 
      <tr> 
 
       <th>Id</th> 
 
       <th>File Name</th> 
 
       <th>Type</th> 
 
       <th>Path</th> 
 
\t \t \t \t   <th>Preview</th> 
 
\t \t \t \t   <th>Delete</th> 
 
      </tr> 
 
     </thead> 
 
    </table> 
 
</div> 
 
</body>

Voici mon uploadProcess.cfc

<cfcomponent> 
 
<cffunction name="getDetails" access="remote" returnFormat="json"> 
 
\t <cfargument name="partyId" type="string" required="yes"> 
 
\t <cfparam name="arguments.iDisplayStart" default="0"> 
 
\t <cfparam name="arguments.iDisplayLength" default="10"> 
 
\t <cfparam name="arguments.iSortCol_0" default="UploadFileID"> 
 
\t <cfparam name="arguments.sSortDir_0" default="ASC"> 
 
\t <cfparam name="arguments.sEcho" default="1"> 
 
\t 
 
\t <cfstoredproc procedure="get_upload_file_details" datasource="standout"> 
 
\t <cfprocparam value="#partyId#" cfsqltype="CF_SQL_INT"> 
 
\t <cfprocparam value="#arguments.iDisplayStart#" cfsqltype="CF_SQL_INT"> 
 
\t <cfprocparam value="#arguments.iDisplayLength#" cfsqltype="CF_SQL_INT"> 
 
\t <cfprocparam value="#arguments.iSortCol_0#" cfsqltype="CF_SQL_VARCHAR"> 
 
\t <cfprocparam value="#arguments.sSortDir_0#" cfsqltype="CF_SQL_VARCHAR"> 
 
\t <cfprocresult name="getUploadDtls"> 
 
\t </cfstoredproc> 
 

 
\t <cfset userArray = arrayNew(1)> \t 
 
\t 
 
\t <cfloop query="getUploadDtls"> 
 
\t <cfif UserSessionID eq ""> 
 
    <cfset deleteLink = "<span class='delete-link link'>Delete</span>" /> 
 
    <cfelse> 
 
    <cfset deleteLink = ""> 
 
    </cfif> 
 
\t \t <cfset userStruct = {}> 
 
\t \t <cfset userStruct.ID = UploadFileID> 
 
\t \t <cfset userStruct.ORG_NAME = OriginalFileName> 
 
\t \t <cfset userStruct.GEN_NAME = SystemFileName> 
 
\t \t <cfset userStruct.TYPE = DocumentName> 
 
\t \t <cfset userStruct.PATH = FilePath> 
 
\t \t <cfset userStruct.URL = "<a href='renderpdf.cfm?path=#FilePath#&name=#OriginalFileName#' target='_blank'>Preview</a>"> 
 
\t \t <cfset userStruct.DELETE = deleteLink> \t \t 
 
\t \t <cfset arrayAppend(userArray, userStruct) > 
 
\t </cfloop> 
 
\t <cfif getUploadDtls.RecordCount GT 0> 
 
    <cfset firstRow = queryGetRow(getUploadDtls,1)> 
 
\t <cfset record_count = firstRow.record_count> 
 
\t <cfelse> 
 
\t <cfset record_count = 0> 
 
    </cfif> 
 
\t <cfset returnStruct = {}> 
 
\t <cfset returnStruct['iTotalRecords'] = record_count> 
 
\t <cfset returnStruct['iTotalDisplayRecords'] = record_count> 
 
\t <cfset returnStruct['sEcho'] = arguments.sEcho> 
 
\t <cfset returnStruct['aaData'] = userArray> 
 
\t <cfset resultsJSON = SerializeJSON(returnStruct)> 
 
\t <cfreturn resultsJSON> 
 
</cffunction> 
 
</cfcomponent>

JSON r Le retour de mon cffunction est donné ci-dessous.

{""aaData"":[{""GEN_NAME"":""sample_489.pdf"",""PATH"":""C://Standout/web_uploads/100004/Medical Reports/sample_489.pdf"",""DELETE"":"""",""ORG_NAME"":""sample.pdf"",""ID"":77,""TYPE"":""Medical Report"",""URL"":""<a href='renderpdf.cfm?path=C://Standout/web_uploads/100004/Medical Reports/sample_489.pdf&name=sample.pdf' target='_blank'>Preview</a>""}],""iTotalDisplayRecords"":1,""iTotalRecords"":1,""sEcho"":1}"

Je ne peux pas comprendre ce qui est de la question peut aider quelqu'un?

+0

Le problème est avec votre retour JSON, il est invalide. Essayez de valider votre JSON à https://jsonlint.com votre JSON devrait être comme { \t "aaData": [{ \t \t "GEN_NAME": "sample_489.pdf", \t \t "PATH": « C:// hors concours/web_uploads/100004/Rapports médicaux/sample_489.pdf », \t \t "SUPPRIMER": "", \t \t "ORG_NAME": "exemple.pdf", \t \t "ID": 77, \t \t "TYPE": "Rapport médical", \t \t "URL": "Preview" \t}], \t "iTotalDisplayRecords": 1, \t "iTotalRecords": 1, \t "sEcho": 1 } –

+0

J'ai déjà donné returnFormat = "JSON" dans mon cffunction, de sorte que le JSON atteint à l'avant -end sera au format correct comme vous l'avez spécifié. –

Répondre

0

Tout d'abord, je supprimerais ces accolades que vous utilisez pour envelopper vos structures.
SerializeJson() fonctionne déjà très bien si vous venez de passer dans vos structures.

Il semble que votre JSON ne soit pas valide, ce qui est probablement à l'origine de l'erreur, ou votre datatable n'est pas configurée correctement.

Honnêtement, je vous recommande de remplir votre table avec un cfloop. Si vous chargez vos données au chargement de la page, cette solution pourrait fonctionner aussi bien.
L'API datatable peut parfois être aléatoire.