gpt4 book ai didi

javascript - 为什么我的 datatables.js 上的搜索功能不起作用?

转载 作者:行者123 更新时间:2023-11-28 00:53:57 26 4
gpt4 key购买 nike

我正在制作一个 CakePHP 2.x 应用程序并按照网站上的说明安装了 datatables.js,但尽管它在那里,但某些功能无法正常工作。我无法更改要显示的条目数量,搜索功能始终不返回任何内容,并且不会将数据拆分为多个页面(例如,如果我将其设置为每页显示 10 个条目,它仍然会显示全部条目)即使超过 10 个,也可以在一页上显示)。

唯一有效的部分是排序功能及其视觉效果。

这是我在其上实现数据表的 View :

<div class="products index">

<h2><?php echo __('Products'); ?></h2>
<table cellpadding="0" cellspacing="0" id="prod-tbl">
<thead>
<head>
<!--<script src="jquery-1.11.1.min.js"></script>-->
<!-- DataTables CSS -->
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.3/css/jquery.dataTables.css">

<!-- jQuery -->
<script type="text/javascript" charset="utf8" src="//code.jquery.com/jquery-1.10.2.min.js"></script>

<!-- DataTables -->
<script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.3/js/jquery.dataTables.js"></script>
<script >$(document).ready( function () {$('#prod-tbl').DataTable();} );</script>
</head>
<tr>
<th><?php echo $this->Paginator->sort('name'); ?></th>
<th><?php echo $this->Paginator->sort('product_code'); ?></th>
<th><?php echo $this->Paginator->sort('image_name'); ?></th>
<th><?php echo $this->Paginator->sort('image_url'); ?></th>
<!--<th><?php echo $this->Paginator->sort('brand_id'); ?></th>
<th><?php echo $this->Paginator->sort('reward_id'); ?></th>-->
<th><?php echo $this->Paginator->sort('product_status_id'); ?></th>
<th><?php echo $this->Paginator->sort('serial_id'); ?></th>
<th><?php echo $this->Paginator->sort('category_id'); ?></th>
<th class="actions"><?php echo __('Actions'); ?></th>
</tr>
</thead>
<?php foreach ($products as $product): ?>
<tbody>
<tr>
<td><?php echo h($product['Product']['name']); ?>&nbsp;</td>
<td><?php echo h($product['Product']['product_code']); ?>&nbsp;</td>
<td><?php echo h($product['Product']['image_name']); ?>&nbsp;</td>
<td><?php echo h($product['Product']['image_url']); ?>&nbsp;</td>
<!--<td><?php echo h($product['Product']['brand_id']); ?>&nbsp;</td>
<td><?php echo h($product['Product']['reward_id']); ?>&nbsp;</td>-->
<td><?php echo h($product['Product']['product_status_id']); ?>&nbsp;</td>
<td><?php echo h($product['Product']['serial_id']); ?>&nbsp;</td>
<td><?php echo h($product['Product']['category_id']); ?>&nbsp;</td>
<td class="actions">
<?php echo $this->Html->link(__('View'), array('action' => 'view', $product['Product']['id'])); ?>
<?php echo $this->Html->link(__('Edit'), array('action' => 'edit', $product['Product']['id'])); ?>
<?php echo $this->Form->postLink(__('Delete'), array('action' => 'delete', $product['Product']['id']), null, __('Are you sure you want to delete # %s?', $product['Product']['id'])); ?>
</td>
</tr>
</tbody>
<?php endforeach; ?>
</table>
<p>
<?php
echo $this->Paginator->counter(array(
'format' => __('Page {:page} of {:pages}, showing {:current} records out of {:count} total, starting on record {:start}, ending on {:end}')
));
?> </p>
<div class="paging">
<?php
echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => ''));
echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
?>
</div>
</div>
<div class="actions">
<h3><?php echo __('Actions'); ?></h3>
<ul>
<li><?php echo $this->Html->link(__('New Product'), array('action' => 'add')); ?></li>
</ul>
</div>

最佳答案

我猜您正在尝试将 datatable.js 包含在 CakePHP 分页页面中。

datatable.js 和 CakePHP Paginator 都是两种不同的过滤数据的方法。 Cake Paginator 在服务器中执行所有类型的过滤,并仅在表中显示结果数据。 Datatable.js 在客户端(javascript)中工作。

当您在分页表上应用 datatable.js 时,它只会过滤结果数据,而不是整个数据。

您可以使用以下2种方法中的任意一种

  1. 利用数据表服务器端处理(Matt Hughes 在这里为 CakePHP 编写了很好的文档 https://datatables.net/development/server-side/php_cake)
  2. 使用 CakePHP 数据表组件。 (如 https://github.com/cnizzdotcom/cakephp-datatable )

关于javascript - 为什么我的 datatables.js 上的搜索功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26451572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com