在服务器端模式下使用DataTables 1.10.15。我创建了一个PHP脚本来提供JSON响应,其中包括它们在文档中提到的参数:https : //datatables.net/manual/server-side#Returned-data
我想将自己的参数添加到JSON响应中,例如
$response = [
'data' => [ ], // Required by DataTables
'form_errors' => [ ] // Not required by DataTables
];
echo json_encode($response);
Run Code Online (Sandbox Code Playgroud)
我为ajax调用准备的js看起来像这样:
var myTable = $('#myTable').DataTable( {
"serverSide": true,
"ajax": {
"url" : "/response.php",
"method" : "POST"
},
});
Run Code Online (Sandbox Code Playgroud)
我如何阅读ajax响应?我已经在API中看到有一种.on('xhr')方法(https://datatables.net/reference/event/xhr)在ajax请求完成时触发,例如
var myTable = $('#myTable').DataTable( {
"serverSide": true,
"ajax": {
"url" : "/response.php",
"method" : "POST"
},
}).on( 'xhr.dt', function () {
// Read response here?
});
Run Code Online (Sandbox Code Playgroud)
但是我当时找不到找到ajax响应数据的方法。
有人知道这是否可能吗?
在许多PHP脚本中,我看到这样的事情:
public function __construct(Container $ci) {
}
Run Code Online (Sandbox Code Playgroud)
我了解构造函数的作用以及如何传递变量。但是我不确定Container在这个例子中是什么意思?这等于$ci = new Container;吗?
我正在用PHP 7构建一个降临节日历,并希望以随机顺序显示日期1 - 24.
我有一个jquery插件可以随机化我的div元素,但它不是很好,我想知道如何在PHP中做到这一点.
我输出日期的代码看起来(简单来说)如下:
for ($d = 1; $d <= 24; $d++) {
echo $d;
}
Run Code Online (Sandbox Code Playgroud)
我的计划是使用rand(1, 24)然后存储在数组中生成的任何数字,例如
$date = rand(1, 24);
$used_dates[] = $date;
Run Code Online (Sandbox Code Playgroud)
然后检查$used_dates选择新日期,例如
$unique_date = false;
while (!$unique_date) {
$date = rand(1, 24);
if (!in_array($date, $used_dates)) {
$used_dates[] = $date;
$unique_date = true;
}
}
Run Code Online (Sandbox Code Playgroud)
但这似乎效率低下.还有更好的方法吗?
在 CakePHP 3.5.13 中,我有一个 Controller 操作,如下所示:
class ReportController extends AppController
{
public function download($id, $format)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将报告 ID 和格式(例如 XLSX、CSV)的参数传递给download函数,例如/report/download/123/csv获取报告 123 的数据并将其输出为 CSV。
我在一个数组中包含了我的报告所需的所有数据,$data. 我想创建单独的模板(.ctp 文件)以将我的数据格式化为每种所需的格式,然后让download()函数将它们发送到浏览器进行下载。
所以我调整了我的功能如下:
public function download($id, $format)
{
$data = // ... Model data in array format
$filename = '123'; // filename for the download
switch ($format):
case 'csv':
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="'.$filename.'.csv"');
$this->viewBuilder()->setLayout('ajax');
$this->set('data', $data);
$this->render('download_csv');
break;
endswitch;
}
Run Code Online (Sandbox Code Playgroud)
这正确地呈现了我从Template/Report/download_csv.ctp. 它也在 ajax …
我正在使用 Bootstrap 3.3.6 开发一个网站
我遵循了有关创建响应式横幅滑块的教程,如下所示:http ://www.jqueryscript.net/slider/Full-Width-Responsive-Carousel-with-jQuery-Bootstrap.html
我希望有选项将文本(位于 内部.carousel-caption)放置在横幅的右侧或左侧,占据可用宽度的 50%。
我对第一张幻灯片的标记如下:
<div class="carousel-inner">
<div class="item active">
<div class="fill" style="background-image:url('foo.jpg');"></div>
<div class="carousel-caption">
<h3>Hello World</h3>
<p>Some more text</p>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用以下 CSS 无法将其定位到右侧(它仍然位于左侧)。尽管完全使用 Bootstrap 进行了定位,但似乎right: 0;没有被遵守。.carousel-caption
.carousel-caption {
max-width: 500px;
top: 0;
right: 0;
bottom: auto;
}
Run Code Online (Sandbox Code Playgroud)
我还意识到设置max-width为 500px 并不是很理想,但是当我尝试 50% 时,它似乎继承了整个浏览器窗口的宽度?
我正在运行 MySQL 5.5.47 并且有许多数据库表,这些表的列的数据类型为TINYINT(1). 我正在尝试将这些更改为,BOOLEAN但不会更改它们。
使用 phpmyadmin 4.6.0 然后转到 Structure 我正在使用下拉列表将列设置为BOOLEAN. 这将执行以下查询:
ALTER TABLE `feedback` CHANGE `tick_receive_updates` `tick_receive_updates` BOOLEAN NOT NULL;
Run Code Online (Sandbox Code Playgroud)
查询运行成功。
当我查看结构时,它不会更新:列仍被标记为 TINYINT(1)
起初我以为这是一个 phpmyadmin 错误所以我跑了
DESCRIBE feedback;
Run Code Online (Sandbox Code Playgroud)
不幸的是,问题仍然存在 - 列没有从 TINYINT(1)
为什么是这样?
我在 CakePHP 3 应用程序中有一个表,downloads其中有一个名为master. 字段类型设置为TINYINT(1)
我可以找到任何这样的记录downloads.master == 1:
$query = $this->Downloads->find()->where(['master' => true]);
Run Code Online (Sandbox Code Playgroud)
但是 Cake 不会让我查询 where downloads.master !== 1。这些都不起作用,并且在执行查询时都返回一个空数组/对象:
$query = $this->Downloads->find()->where(['master' => false]);
$query = $this->Downloads->find()->where(['master' => 0]);
$query = $this->Downloads->find()->where(['master' => null]);
$query = $this->Downloads->find()->where(['master' => '']);
Run Code Online (Sandbox Code Playgroud)
你用什么作为条件来使这成为可能?我的想法是应该是false因为这true与 .
我已经使用 phpMyAdmin 检查了我的表中的记录,master == 1并且确实有两个记录在哪里,master == null所以它不是要返回零结果的情况。
我想生成一个 JSON 响应。我在我的控制器方法中尝试了以下方法:
public function removeFilter($id = null)
{
$this->autoRender = false;
header('Content-Type: application/json');
echo json_encode(['result' => 'filter_removed']);
}
Run Code Online (Sandbox Code Playgroud)
然后按照CakePHP3.4 中的说明进行操作:如何发送 json 对象响应?我也试过:
public function removeFilter($id = null)
{
$this->autoRender = false;
return $this->response
->withType('application/json')
->withStringBody(['result' => 'filter_removed']);
}
Run Code Online (Sandbox Code Playgroud)
这两个都给出了Content-Type: text/html; charset=UTF-8. 没有与此 Controller 方法关联的模板,这就是为什么autoRender = false.
这里出了什么问题?
蛋糕PHP 3.5.13
php ×5
cakephp ×3
ajax ×1
cakephp-3.0 ×1
cakephp-3.x ×1
css ×1
csv ×1
datatables ×1
jquery ×1
mysql ×1
oop ×1
phpmyadmin ×1