数据表,更改 AJAX 数据(不使用元素)

Posted

技术标签:

【中文标题】数据表,更改 AJAX 数据(不使用元素)【英文标题】:Datatables, change AJAX data ( not with elements ) 【发布时间】:2015-10-10 21:39:56 【问题描述】:

我有一个由 AJAX 填充的数据表。一切都很好,但我想要一些快捷方式来从服务器请求数据。问题是如何更改即时发送的数据?我知道我可以创建一个元素 <input> 或其他东西,它可以从中获取价值,但我希望一旦点击某些东西我可以更改数据。

var Table = $('#table').DataTable(
            "ajax": 
                "type" : "POST",
                "url": "url",
                "data": function ( d ) 
                    d.cmd = "offline";
                
            ,
        );

这可以正常工作并将cmd 作为offline 传递回服务器。 如何在调用 ajax.reload 之前更改点击时的值。

$('#online_btn').on( 'click', function () 
            Table.ajax.reload();
         );

使用这个

$('#online_btn').on( 'click', function () 
            var d = [];
            d.cmd = "online";
            Table.ajax.data(d);
            Table.ajax.reload();
         );

返回 ajax.data is not a function 错误

【问题讨论】:

【参考方案1】:

您可以修改一个对象并使用$.extend() 在数据函数中合并

var myData =;
var Table = $('#table').DataTable(
            "ajax": 
                "type" : "POST",
                "url": "url",
                "data": function ( d ) 
                   return  $.extend(d, myData);
                
            ,
        );

$('#online_btn').on( 'click', function ()             
            myData.cmd = "online";            
            Table.ajax.reload();
);

【讨论】:

即将开始实施类似的东西。正是我要找的东西 @charlieftl 我刚才需要做这种事情。搜索了很多,但没有找到像您这样的超级简单示例,该示例演示了如何使用数据表的 ajax 功能的数据选项。感谢这个简单但非常有用的例子!! 我已经为此苦苦挣扎了几天。你的例子就像一个魅力!非常感谢。 最佳答案让我免于一整天的不成功搜索!【参考方案2】:

在发送对象之前使用 jquery ajax。

$.ajax(
 url: "http://fiddle.jshell.net/favicon.png",
 beforeSend: function( xhr ) 
   //update your value here

)

来源:jquery documentation

发送前 类型:函数(jqXHR jqXHR,PlainObject 设置) 一个预请求回调函数,可用于在发送之前修改 jqXHR(在 jQuery 1.4.x 中为 XMLHTTPRequest)对象。使用它来设置自定义标题等。 jqXHR 和设置对象作为参数传递。这是一个 Ajax 事件。在 beforeSend 函数中返回 false 将取消请求。从 jQuery 1.5 开始,无论请求类型如何,都将调用 beforeSend 选项。

【讨论】:

这就是将函数传递给ajax.data 属性所做的只是在插件内部完成【参考方案3】:

我在 2021 年这样做:

function customSearch()
        let t = JSON.parse(window.filter);
        t["custom-field"] =  $('input[name="custom-field"]').val() || "";
        window.filter = JSON.stringify(t);
        return window.filter;

const table = $('#table').DataTable(
        ajax:
           url:"my-wonderful-url.json",
           type:"POST",
           data: function(d) 
            const t = customSearch();
            return  Object.assign(d, filter:t);
        ,
        error:function(e)console.log(e);,            
);
 $('input[name="custom-field"]').on('keyup', function(e)         
    table.ajax.reload(null, false);
);

【讨论】:

以上是关于数据表,更改 AJAX 数据(不使用元素)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ajax 和 Jquery 从 PHP 数据库中提取信息,并使用该信息填充元素?

获得 ajax 成功后,数据表布局被更改

发布在 DataTables 中不可见的表单元素

使用 Ajax 实时更改数据库

使用 PHP+jQuery AJAX 检查 MySQL 数据库的更改并加载更改?

如何使用 CodeIgniter 中的 AJAX 函数更改网页的数据