Php 使用jQuery数据表的Ajax源数据

Php 使用jQuery数据表的Ajax源数据,php,json,ajax,mongodb,datatables,Php,Json,Ajax,Mongodb,Datatables,我想使用plugin将我的一个MongoDb集合显示到表中 但是,我得到的弹出消息如下所示: 为第0行第0列请求了未知参数“0”。更多 有关此错误的信息,请参阅 以下部分代码以MongoDb过程方式从作业集合中选择作业id、标题、已提交和状态列: submit.php $filter = ['user_id' => $_SESSION['google_id']]; $query = new MongoDB\Driver\Query($filter); try { $cursor

我想使用plugin将我的一个MongoDb集合显示到表中

但是,我得到的弹出消息如下所示:

为第0行第0列请求了未知参数“0”。更多 有关此错误的信息,请参阅

以下部分代码以MongoDb过程方式从
作业集合
中选择
作业id
标题
已提交
状态
列:

submit.php

$filter = ['user_id' => $_SESSION['google_id']];
$query = new MongoDB\Driver\Query($filter);

try {

    $cursor = $manager->executeQuery($dbname.'.'.$collection, $query);
    $arr = array();     
    foreach($cursor as $c){         
        $temp = array("job_id" => $c->job_id, "title" => $c->title, "submitted" => $c->submitted, "status" => $c->status);
        array_push($arr, $temp);
    }
    echo json_encode($arr);

} catch (MongoDB\Driver\Exception\Exception $e) {
    echo $e->getMessage(), "\n";
}
<table id="tableJobs"></table>
<script>
$(document).ready(function(){
    $.ajax({
      type: "POST",
      url: "submit.php",
      data: "",
      dataType: "json",
      success: function(resultData) {
          var opt={
            "bProcessing":true,
            "aoColumns":
            [
                {"sTitle":"Submission"},
                {"sTitle":"Title"},
                {"sTitle":"Submitted On"},
                {"sTitle":"Status"}
            ],
            "aaData": resultData
         };         
       $("#tableJobs").dataTable(opt);
       }
     });    
});
</script>
并将其显示在HTML页面中:

jobs.php

$filter = ['user_id' => $_SESSION['google_id']];
$query = new MongoDB\Driver\Query($filter);

try {

    $cursor = $manager->executeQuery($dbname.'.'.$collection, $query);
    $arr = array();     
    foreach($cursor as $c){         
        $temp = array("job_id" => $c->job_id, "title" => $c->title, "submitted" => $c->submitted, "status" => $c->status);
        array_push($arr, $temp);
    }
    echo json_encode($arr);

} catch (MongoDB\Driver\Exception\Exception $e) {
    echo $e->getMessage(), "\n";
}
<table id="tableJobs"></table>
<script>
$(document).ready(function(){
    $.ajax({
      type: "POST",
      url: "submit.php",
      data: "",
      dataType: "json",
      success: function(resultData) {
          var opt={
            "bProcessing":true,
            "aoColumns":
            [
                {"sTitle":"Submission"},
                {"sTitle":"Title"},
                {"sTitle":"Submitted On"},
                {"sTitle":"Status"}
            ],
            "aaData": resultData
         };         
       $("#tableJobs").dataTable(opt);
       }
     });    
});
</script>

$(文档).ready(函数(){
$.ajax({
类型:“POST”,
url:“submit.php”,
数据:“,
数据类型:“json”,
成功:函数(resultData){
变量选择={
“bProcessing”:正确,
“aoColumns”:
[
{“缝合”:“提交”},
{“针”:“标题”},
{“缝合”:“于”}提交,
{“缝合”:“状态”}
],
“aaData”:结果数据
};         
$(#tableJobs”).dataTable(opt);
}
});    
});
我错过了什么步骤?如何让它在HTML表中显示数据库中的所有JSON数据源,如下所示:

<tr>
<td>F37CE14A-506C-24E7-EBDC-362216BB9089</td>
<td>Demo</td>
<td>2017-03-01 06:47:03</td>
<td>Finished</td>
</tr>

F37CE14A-506C-24E7-EBDC-362216BB9089
演示
2017-03-01 06:47:03
完成了

提前感谢您的帮助。

这正是问题所在(至少datatables文档是这么说的)。在行中的某个位置,您似乎有空值或空值。尝试将它们初始化为空字符串

$job_id = !empty($c->job_id) ? $c->job_id : '';
$title = !empty($c->title) ? $c->title : '';
$submitted = !empty($c->submitted) ? $c->submitted : '';
$status = !empty($c->status) ? $c->status : '';

$temp = array("job_id" => $job_id, "title" => $title, "submitted" => $submitted, "status" => $status);
此外,您还需要告诉浏览器预期的内容,即JSON。因此,在输出数据之前添加一个标题函数:

header('Content-Type: application/json'); // add this line here
echo json_encode($arr);
更新

因此,查看datatables的文档,您需要使用“aoColumns”对象上的属性“mDataProp”设置列标识符。然后将这些声明的键设置为结果中的数组键。请看下面的小提琴:

$(文档).ready(函数(){
var resultData=[
{“提交日期”:“BB520E08-A183-CBEB-BAE2-006056169116”,“标题”:“LA001”,“提交日期”:“2017-03-12 11:27:41”,“状态”:“正在运行”},
];
变量选择={
“bProcessing”:正确,
“aoColumns”:
[
{“mDataProp”:“提交”},
{“mDataProp”:“Title”},
{“mDataProp”:“于”}提交,
{“mDataProp”:“状态”}
],
“aaData”:结果数据
};         
$(#tableJobs”).dataTable(opt);
});


您的数据库行是否有任何空列值?@Yolo空列值不显示。这是我的JSON格式:
[{“job_id”:“BB520E08-A183-CBEB-BAE2-006056169116”,“title”:“LA001”,“submitted”:“2017-03-12 11:27:41”,“status”:“Running”}]
初始化所有变量后,我收到了相同的错误消息。抱歉,此解决方案不适用于我。顺便说一句,错误消息
请求了未知参数“{parameter}”
,它是一个等于
0
的整数。当{parameter}为整数时,DataTables从数组中查找数据。在这种情况下,请求的数据不存在于源数组中-可能是因为数组不够长。(至少是datatables手册上说的),但我不知道如何修复它。也许我错了,如果是的话,我在谷歌上搜索了错误的关键字,并为此道歉。还有其他解决办法吗?再次感谢!