DataTables 警告:table id=dataTables - Ajax 错误。 404 未找到
Posted
技术标签:
【中文标题】DataTables 警告:table id=dataTables - Ajax 错误。 404 未找到【英文标题】:DataTables warning: table id=dataTables - Ajax error. 404 Not Found 【发布时间】:2014-07-04 17:51:51 【问题描述】:我正在尝试通过 php 和 Ajax 从 mysql 数据库中获取数据,然后使用 DataTables 将数据显示在表格中。我正在使用 XAMPP 1.8.3
这是我的 html 代码的一部分:
<table id="dataTables-melate" class="table table-striped table-bordered table-hover" cellspacing="0" >
<thead>
<tr>
<th>Concurso</th>
<th>R1</th>
<th>R2</th>
<th>R3</th>
<th>R4</th>
<th>R5</th>
<th>R6</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Concurso</th>
<th>R1</th>
<th>R2</th>
<th>R3</th>
<th>R4</th>
<th>R5</th>
<th>R6</th>
</tr>
</tfoot>
</table>
这是我的 php 脚本(现在可以编辑并运行):
//default_chart_numbers.php
$loteria='revancha';
$lotto = new Lotto();
$ultimos_resultados=$lotto->last_results($loteria,20);
//echo json_encode($ultimos_resultados);
/*Formatting the output to a non associative array*/
function objectToArray($d)
if (is_object($d))
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
if (is_array($d))
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
else
// Return array
return $d;
$new_array = objectToArray($ultimos_resultados);
//echo '<pre>',print_r($new_array),'</pre>';
$result = array();
echo '[';
foreach ($new_array as $new_array2)
echo '[';
foreach ($new_array2 AS $value)
echo $value;
if($value!==end($new_array2)) //referencias: http://***.com/a/8780881/1883256
echo',';
echo ']';//referencias: http://www.mydigitallife.info/how-to-access-php-array-and-multidimensional-nested-arrays-code-syntax/
if($new_array2!==end($new_array))
echo ',';
else echo '';
echo ']';
这是 PHP 脚本的输出数据的样子(现在有了新的变化):
[[2738,11,12,28,30,50,54], ... ,[2757,32,34,35,36,50,55]]
这里是 jQuery 代码:
<script>
$(document).ready(function()
$('#dataTables-melate').dataTable(
"bProcessing": true,
"bServerSide": true,
"sAjaxSource":
"url":"ajax/default_chart_numbers.php",
"type": "POST"
,
"columns":[
"data": "concurso",
"data": "R1",
"data": "R2",
"data": "R3",
"data": "R4",
"data": "R5",
"data": "R6"
]
);
);
</script>
当我加载页面(在 Firefox 中)时,我收到此错误: DataTables 警告:table id=dataTables-melate - Ajax 错误。 Firebug 也告诉我们这个错误:404 Not Found
我错过了什么? 这么久以来我一直在努力解决这个问题:/
【问题讨论】:
我在 chrome 上遇到同样的错误:/ 【参考方案1】:这个答案将是一种将 AJAX 与 DataTables 结合使用的方法有些不同,希望它对一些人有所帮助,因为它的代码要少得多。
当使用 AJAX 并向 DataTables 添加数据时,我通常会走这条路: 1)就像你正在做的那样在服务器端回显json_encode。 2)在我的ajax调用的成功方法中,我会有这个:
其中“column_data”基本上只是对应的数据值数组 到每一列。 DataTables 通过计数自动以这种方式添加数据 此数组中有多少个值并将每个值(列数据)推送到行 基于数组中的索引。 所以基本上你只需要确保你拥有的列数 等于此数组的大小,并确保在此数组中,您的数据 是按照您希望它显示的正确顺序。
$.ajax(
url: "your_path",
type: "post_or_get",
success : function (resp)
// would look something like ['val1','val2', 'etc']
var column_data = $.parseJSON(resp);
// adding data to datatables
// if column_data is 1 row
$('your_table_element').dataTable().fnAddData(column_data);
// to add multiple rows (array of arrays, just loop)
for (var j=0;j<=column_data.length-1;++j)
// adding each row with its column data
$('your_table_element').dataTable().fnAddData(column_data[j]);
,
error: function(jqXHR, textStatus, ex)
console.log(textStatus + "," + ex + "," + jqXHR.responseText);
);
所以在 PHP 中,您实际上并不需要返回数据是关联数组。这就是我目前正在实施的方式,对我来说效果很好。
注意:此方法的一个常见错误是返回数据数组的长度不等于您拥有的列数。所以确保它们是平等的。如果不是,您可能会从 DataTables 中看到一个错误,提示某列不存在等。
【讨论】:
我试过了,但现在出现以下错误:DataTables 警告:table id=dataTables-melate - Requested unknown parameter '0' for row 0 现在表格看起来很好,但是是空的。它遇到了应该显示的 20 个值(因为在表中它说:显示 20 个值中的 10 个)。 你的返回数据是数组吗?我认为这就是为什么它说unknown parameter'0'
它必须在索引 0 处查看您的第一行数据。 fnData() 仅添加一行,我忘了提及这一点。我会将其添加到编辑中。因此,要使用 fnData(),您只需要遍历您的结果集并每次调用它,我会随时更新帖子。
好吧检查编辑。确保注释掉不需要的部分(成功方法中的循环或单行)。你不应该两者都需要。
好的。我用循环尝试了它并评论了单行。我仍然得到同样的错误,但现在这个错误出现了 20 倍。它以unknown parameter '0' for row '0'
开头,然后javascript 警报继续显示unknown parameter '0' for row '20'
,直到unknown parameter '0' for row '39'
已编辑:好的。我用循环尝试了它并评论了单行。我仍然得到同样的错误,但现在这个错误出现了 20 倍。它以unknown parameter '0' for row '0'
开头,然后javascript 警报继续显示unknown parameter '0' for row '1'
,直到unknown parameter '0' for row '19'
以上是关于DataTables 警告:table id=dataTables - Ajax 错误。 404 未找到的主要内容,如果未能解决你的问题,请参考以下文章
DataTables 警告(表 id = 'table-filter'):从数据源请求未知参数 '0' 用于数据表中的第 0 行错误
DataTables 警告:table id=example - 无法重新初始化 DataTable - jQuery
ajax datatable - DataTables警告:table id = example - 无法重新初始化DataTable
DataTables 警告:表 id=id - 请求行 row-index、列 column-index 的未知参数“parameter”
DataTables warning: table id=DataTables_Table_0 - Requested unknown paramete
DataTables warning: TABLE id=DataTables_Table_0 - Requested UNKNOWN parameter '7' FOR ROW 0(