小编And*_*ndy的帖子

DataTables使用您自己的参数读取ajax响应

在服务器端模式下使用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响应数据的方法。

有人知道这是否可能吗?

ajax jquery datatables

2
推荐指数
1
解决办法
4922
查看次数

PHP函数参数中变量之前的类名称

在许多PHP脚本中,我看到这样的事情:

public function __construct(Container $ci) {

}
Run Code Online (Sandbox Code Playgroud)

我了解构造函数的作用以及如何传递变量。但是我不确定Container在这个例子中是什么意思?这等于$ci = new Container;吗?

php oop

1
推荐指数
1
解决办法
451
查看次数

PHP - 生成没有重复的随机数

我正在用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)

但这似乎效率低下.还有更好的方法吗?

php

1
推荐指数
1
解决办法
2186
查看次数

CakePHP 3 将 .ctp 模板输出为 CSV 文件

在 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 …

php csv cakephp

1
推荐指数
1
解决办法
768
查看次数

右:0 不适用于绝对定位

我正在使用 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% 时,它似乎继承了整个浏览器窗口的宽度?

css twitter-bootstrap-3

0
推荐指数
1
解决办法
8458
查看次数

phpmyadmin 不会将 MySQL TINYINT(1) 更改为 BOOLEAN 数据类型

我正在运行 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)

为什么是这样?

mysql phpmyadmin

0
推荐指数
1
解决办法
4899
查看次数

如何与“null”(空)字段进行比较?

我在 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所以它不是要返回零结果的情况。

php cakephp query-builder cakephp-3.x

0
推荐指数
1
解决办法
848
查看次数

你如何在 CakePHP 3.x 中发送 JSON 响应

我想生成一个 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 cakephp cakephp-3.0

0
推荐指数
1
解决办法
1923
查看次数