带有SQLSRV和JSON的jQuery DataTable

时间:2016-07-20 17:54:43

标签: javascript php jquery json datatables

我不明白我做错了什么。这不是执行ajax调用并返回JSON的正确格式吗?

我正在尝试返回JSON来填充DataTable。我以前做过类似的事情,但这次我无法使它发挥作用。

这是脚本(" api / exceptions_all.php"),我使用SQLSRV返回JSON:

 <?php
   include("../include/database.php");

   $select = "SELECT
               ''
               ,[FOR_PARTNER] 
               ,[FOR_NAME]
               ,[SHP_PARTNER]
               ,[SHP_NAME]
               ,[MODDATE]
               ,[MODUSER]
               ,[ID]
             FROM [main].[dbo].[for_exceptions]";

 $query = sqlsrv_query($dbc, $select) or die(sqlsrv_errors());
 $out = array();

 while( $row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC) ) 
 {
   $out[] = $row;
 }
 echo json_encode( $out );
 sqlsrv_free_stmt($query);

 ?>

现在这里是我的javascript文件(&#34; exceptions.js&#34;),我试图检索JSON并将其打印在数据表中:

 $(document).ready(function()
 {
   var $dataTable = $('#example1').DataTable({
     "type": 'POST',
     "ajax": 'api/exceptions_all.php',
     "data": data,
     "dataType": 'json',
     "bDestroy": true
   });
 });

我一直收到错误声明&#34;未捕获的ReferenceError:未定义数据&#34;参考&#34;数据&#34;:上面的数据。

在我的HTML文件中,我有填充DataTable的表:

 <table id="example1">
 <thead>
   <tr>
     <th>Edit</th>
     <th>FF Partner Code</th>
     <th>FF Name</th>
     <th>SHP Partner Code</th>
     <th>SHP Name</th>  
     <th>Modified Date</th>
     <th>Modified User</th>
     <th>ID</th>
   </tr>
 </thead>
 // datatable should be here
 </table>

2 个答案:

答案 0 :(得分:0)

我很遗憾在while循环中声明$ out []数组;

     <?php
     include("../include/database.php");

     $select = "SELECT
           ''
           ,[FOR_PARTNER] 
           ,[FOR_NAME]
           ,[SHP_PARTNER]
           ,[SHP_NAME]
           ,[MODDATE]
           ,[MODUSER]
           ,[ID]
         FROM [main].[dbo].[for_exceptions]";

     $query = sqlsrv_query($dbc, $select) or die(sqlsrv_errors());

     $out=array();**// add this line** 
     while( $row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC) ) 
     {
     $out[] = $row;
     }
     echo json_encode( $out );
     sqlsrv_free_stmt($query);

   ?>

答案 1 :(得分:0)

看起来你正在使用jQuery的DataTables插件......

这样的事可能......

$(document).ready(function()
{
   var $dataTable = $('#example1').DataTable({
     "ajax": 'api/exceptions_all.php'
   });
});

这直接来自Docs ...