在数据表上显示图像

Posted

技术标签:

【中文标题】在数据表上显示图像【英文标题】:Displaying image on Datatable 【发布时间】:2015-03-25 00:26:08 【问题描述】:

我正在使用服务器端处理读取数据库表并将记录转换为Json文件,并将其传递给数据库表以显示数据。

读取数据库并将其转换为json:

代码:

 Route::get('banner/list/banners/json/id', function ()
   
      $banner = DB::table('banner_creatives')->where('Id','=','53')->get();

      $recordsTotal = count($banner);

      $data['draw'] = 1;
      $data['recordsTotal'] = $recordsTotal;
      $data['recordsFiltered'] = $recordsTotal;

      $data['data'] = $banner;

      return Response::json($data);
   );

Json 输出:

  "draw":1,"recordsTotal":1,"recordsFiltered":1,"data":["id":1,"bId":26,"cId":53,"bName":"32_32_53.jpeg","storageType":"url","width":32,"height":32,"weight":1,"imageURL":"localhost:8000\\\/banner\\\/view\\\/32_32_53.jpeg","clickURL":"","created_at":"2015-01-26 12:32:28","updated_at":"2015-01-26 12:32:28","deleted_at":null]

正如你在这个 json 中看到的,我有想要在桌子上显示的图像 Url。

javascript 代码:

   $(document).ready(function() 
    var table = $('#banner').DataTable( 
    "processing": true,
    "serverSide": false,
    "ajax": "banners/json/53",
    "columns": [
         "data": "id" ,
         "data": "bannerId" ,
         "data": "campaignId" ,
         "data": "bannerName" ,
         "data": "width" ,
         "data": "height" ,
         "data": "imageUrl" 
    );
 );

数据表代码:

 <table id="banner" class="display table table-striped table-bordered table-hover dataTable no-footer" cellspacing="0" >
                        <thead>
                            <tr>
                                <th>id</th>
                                <th>Banner Id</th>
                                <th>Campaign Id</th>
                                <th>Banner Name</th>
                                <th>Width</th>
                                <th>Height</th>
                                <th>Image/Banner</th>
                            </tr>
                        </thead>
                        <tfoot>
                            <tr>
                                <th>id</th>
                                <th>Banner Id</th>
                                <th>Campaign Id</th>
                                <th>Banner Name</th>
                                <th>Width</th>
                                <th>Height</th>
                                <th>Image/Banner</th>
                            </tr>
                        </tfoot>
                    </table>

在最后一列显示图像 URL 但不是我想要的,如果可能的话,我想使用 URL 在数据表上显示通常的图像。

【问题讨论】:

【参考方案1】:

您可以使用columns.render 选项指定可以修改列中呈现的数据的回调函数。

回调函数采用三个参数(自 1.10.1 以来四个)。第一个参数是单元格的原始数据(来自 db 的数据),第二个参数是调用类型(过滤器、显示、类型或排序),第三个参数是行的完整数据源。该函数应返回应在单元格中呈现的字符串。

在您的列定义中,将render 选项添加到您的imageUrl 列定义中:


    "data": "imageUrl",
    "render": function(data, type, row) 
        return '<img src="'+data+'" />';
    

找到有关渲染选项的文档here。

【讨论】:

我用我的代码 "columns": [ "data": "profile_pic", "render": function (data, type, full, meta) return ''; ,它对我来说非常有效。从我这边投票【参考方案2】:

这是我的解决方案,希望对某人有所帮助。

 
      'targets': [15,16],
      'searchable': false,
      'orderable':false,
      'render': function (data, type, full, meta) 
      return '<img src="'+data+'" style="height:100px;width:100px;"/>';
                        
  ,

【讨论】:

【参考方案3】:
"columnDefs": [
            
                // The `data` parameter refers to the data for the cell (defined by the
                // `data` option, which defaults to the column being worked with, in
                // this case `data: 0`.
                "render": function ( data, type, row ) 
                    return '<img src="'+data+'" style="width=300px;height=300px;" />';
                ,
                "targets": 1 // column index 
             

        ]

【讨论】:

以上是关于在数据表上显示图像的主要内容,如果未能解决你的问题,请参考以下文章

在 Geoserver 上显示 Bing 图像

图像未显示在 webview 上

在LCD显示摄像头图像

带有社交元数据的 Firebase 动态链接未在 iMessage 上显示图像(iOS 消息)

Java - 使用用户表单输入将图像上传到网站,将它们保存在 MySQL 数据库中,并在网站上显示图像

图像未显示(Xamarin 表单)