gpt4 book ai didi

php - DataTables 警告 : table id=dataTables - Ajax error. 404 未找到

转载 作者:行者123 更新时间:2023-11-29 05:22:48 25 4
gpt4 key购买 nike

我正在尝试通过 PHP 和 Ajax 从 MySQL 数据库中获取数据,然后使用 DataTables 将其显示在表格中。我正在使用 XAMPP 1.8.3

这是我的 html 代码的一部分:

<table id="dataTables-melate" class="table table-striped table-bordered table-hover" cellspacing="0" width="100%">
<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://stackoverflow.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 警告:表 id=dataTables-melate - Ajax 错误。
Firebug 也提示存在此错误:404 Not Found

我错过了什么?这么久以来,我一直在为此苦苦挣扎:/

最佳答案

这个答案是将 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 的错误,提示列不存在等等。

关于php - DataTables 警告 : table id=dataTables - Ajax error. 404 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23692530/

25 4 0