jQuery DataTables:单元格中的超链接(数据源:Mysql表)

时间:2017-11-04 23:18:00

标签: javascript php jquery ajax datatables

我的问题是前一个问题的后续行动: How to display a hyperlink in a cell with jQuery DataTables

还有一个小提琴链接provided

我现在有同样的问题,除了我的数据源是Mysql数据库表。

本质上,我现在正在努力实现“链接的渲染”,而源“数据”来自Mysql表(例如,在前面的例子中链接的值“5555”和“5554”是值在mysql表中的单元格中。)

我的理解(或实际假设)是这里的关键在于之前提供的javascript部分(“数据”源参考以及“渲染”部分):(以下仅是“本地数据源”)在上一个答案中提供的示例,这不是我使用的代码,我的代码在下面第二步)

$(document).ready(function (){
    var data = [["5555","07/17/2010","RCC Saturday Open","E10","Harris,  Fred","1900","Nikolayev, Igor (FM)","2367","1-0"],["5554","07/17/2010","RCC Saturday Open","B01","Nikolayev, Igor (FM)","2367","Motroni, Richard","1728","1-0"]];

    var table = $('#example').DataTable({
        data: data,
        columnDefs: [
            {
                targets:0,
                render: function ( data, type, row, meta ) {
                    if(type === 'display'){
                        data = '<a href="basic.php?game=' + encodeURIComponent(data) + '">' + data + '</a>';
                    }

                    return data;
                }
            }
        ]      
    });

});

以下是我正在使用的基本代码,我需要将“数据位置数据”和“渲染”部分合并到一起,以使超链接正常工作:

function fetch_data()
  {
   var dataTable = $('#user_data').DataTable({
   "processing" : true,
    "serverSide" : true,

    "ajax" : {
            url:"fetch.php",
            type:"POST"
    }
   });

我的数据获取部分通过“fetch.php”运行良好,但我不知道如何实现工作链接,因为在我的情况下数据源是外部mysql表。

编辑:原始问题已解决。谢谢@Charlietfl!

编辑2:关于“GET”类似的传递变量在链接上的相似性的一个后续问题与通过“POST”可能相同吗?所以链接不会出于安全目的而成为可收藏的?

1 个答案:

答案 0 :(得分:0)

使用外部数据源与使用JavaScript源数据没有什么不同,只需删除data选项并将其替换为ajax选项。

请注意,在POST请求中隐藏变量不会以任何方式提高安全性。可以在控制台中检查任何请求。

此外,只有在从原始页面访问时才有其他方式显示目标页面,例如检查引荐来源或使用会话cookie。

但是,您可以创建一个隐藏的表单并POST到页面,如下所示。

var table = $('#example').DataTable({
    ajax: {
        url: 'https://api.myjson.com/bins/qgcu'
    },
    columnDefs: [
        {
            targets:0,
            render: function ( data, type, row, meta ) {
                if(type === 'display'){
                    data = '<a class="link-post" href="https://www.gyrocode.com/">' + data + '</a>';
                }

                return data;
            }
        }
    ]
});

// Handle click on link in the table
$('#example').on('click', '.link-post', function(e){
   e.preventDefault();

   // Get row data
   var data = table.row($(this).closest('tr')).data();

   var form = $('#frm-main').get(0);

   // Update form action URL if needed
   form['action'] = this.href;

   // Set required form parameters
   form['name'].value = data[0];

   // Submit form
   form.submit();   
});

请参阅this example以了解如何实施此功能。