当前位置: 首页 > 面试题库 >

单击按钮时,如何触发jquery数据表fnServerData通过AJAX更新表?

田曜瑞
2023-03-14
问题内容

我正在将datatables插件与服务器端数据一起使用,并使用AJAX更新表。

我的dataTables设置如下所示:

tblOrders = parameters.table.dataTable( {
    "sDom": '<"S"f>t<"E"lp>',
    "sAjaxSource": "../file.cfc",
    "bServerSide": true,
    "sPaginationType": "full_numbers",  
    "bPaginate": true,
    "bRetrieve": true,
    "bLengthChange": false,         
    "bAutoWidth": false,
    "aaSorting": [[ 10, "desc" ]],      
    "aoColumns": [                      
        ... columns 
                  ],
    "fnInitComplete": function(oSettings, json) {
        // trying to listen for updates
        $(window).on('repaint_orders', function(){
            $('.tbl_orders').fnServerData( sSource, aoData, fnCallback, oSettings );
            });
        },
    "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
        var page = $(oSettings.nTable).closest('div:jqmData(wrapper="true")')
        aoData.push(
            { "name": "returnformat", "value": "plain"},
            { "name": "s_status", "value": page.find('input[name="s_status"]').val() },
            { "name": "s_bestellnr", "value": page.find('input[name="s_bestellnr"]').val() },
            { "name": "form_submitted", "value": "dynaTable" }
            );
        $.ajax({ "dataType": 'json', "type": "POST", "url": sSource, "data": aoData , "success": fnCallback });
        }

我有一些用于过滤数据服务器端的自定义字段,我将其与AJAX请求一起推送。问题是,我不知道如何从表外部触发JSON请求。如果用户键入过滤器,则fnServerData将触发并更新表。但是,如果用户在表外选择控件,则我不知道如何触发
fnServerData 函数。

现在,我正在尝试触发一个自定义事件,并在fnInitComplete中进行监听。虽然可以检测到用户在选择自定义过滤条件,但我缺少fnServerData正确触发所需的所有参数。

问题
是否可以通过实际dataTables表之外的按钮触发fnServerData?

我想我可以尝试为过滤器添加一个空格,但这并不是一个选择。

感谢您的输入!


问题答案:

我前段时间找到了这个脚本(所以我不记得它来自:(和谁归功于它了:’(),但是在这里:

$.fn.dataTableExt.oApi.fnReloadAjax = function (oSettings, sNewSource, fnCallback, bStandingRedraw) {
    if (typeof sNewSource != 'undefined' && sNewSource != null) {
        oSettings.sAjaxSource = sNewSource;
    }
    this.oApi._fnProcessingDisplay(oSettings, true);
    var that = this;
    var iStart = oSettings._iDisplayStart;
    var aData = [];

    this.oApi._fnServerParams(oSettings, aData);

    oSettings.fnServerData(oSettings.sAjaxSource, aData, function (json) {
        /* Clear the old information from the table */
        that.oApi._fnClearTable(oSettings);

        /* Got the data - add it to the table */
        var aData = (oSettings.sAjaxDataProp !== "") ?
            that.oApi._fnGetObjectDataFn(oSettings.sAjaxDataProp)(json) : json;

        for (var i = 0; i < aData.length; i++) {
            that.oApi._fnAddData(oSettings, aData[i]);
        }

        oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
        that.fnDraw();

        if (typeof bStandingRedraw != 'undefined' && bStandingRedraw === true) {
            oSettings._iDisplayStart = iStart;
            that.fnDraw(false);
        }

        that.oApi._fnProcessingDisplay(oSettings, false);

        /* Callback user function - for event handlers etc */
        if (typeof fnCallback == 'function' && fnCallback != null) {
            fnCallback(oSettings);
        }
    }, oSettings);
}

调用数据表初始化函数 之前, 添加该代码。那么您可以像这样调用重载:

$("#userFilter").on("change", function () {
        oTable.fnReloadAjax(); // In your case this would be 'tblOrders.fnReloadAjax();'
    });

userFilter是下拉菜单的ID,因此当它更改时,它将重新加载表的数据。我只是添加了此示例,但您可以在任何事件上触发它。



 类似资料:
  • 问题内容: 我想知道是否有人可以指出我正确的方向。我有一个带有click事件的asp.net按钮(运行一些服务器端代码)。我想做的是通过ajax和jquery调用此事件。有什么办法吗?如果是这样,我会喜欢一些例子。 提前致谢 问题答案: 这就是jQuery对于ASP.Net开发人员真正的亮点。假设您有这个ASP按钮: 呈现后,您可以查看页面的源,页面上的ID不会是btnAwesome,而是$ ct

  • 我试图更新下载按钮点击数据库列。似乎很容易,但当我点击按钮数据库中的计数器不更新。 我不确定这是否是最佳和正确的方法,但这是我到目前为止所做的。 一个输入字段,用户从API中提取图像 当图像加载有显示按钮下载和用户可以下载它 另外,当用户搜索图像时,我会将搜索的内容保存在数据库中。这是我的控制器函数,用于将图像保存在数据库中的搜索字符串中。这很好用 这是下载时更新按钮单击的功能 视图中的按钮 路线

  • 问题内容: 我正在使用精美的框创建弹出窗口,并使用iframe在其上加载另一个页面。这是我的代码 它成功加载页面并执行相应的操作。但是,它没有关闭弹出窗体,而是在弹出窗口本身内部加载了弹出源窗体。我想在工作完成后关闭弹出窗口,然后返回到从其生成弹出窗口的主菜单页面。如何在弹出窗口的按钮单击上实现此目的。 此致Rangana 问题答案: 拨电至 根据http://fancybox.net/faq 如

  • 问题内容: 似乎是一个简单的问题,但解决其他问题的方法似乎对我没有用。 试图通过单击按钮来触发AJAX请求,但似乎并未触发。 HTML示例 javascript 问题答案: 您拥有的代码在拨弄中工作得很好。初始页面加载后,按钮是否通过AJAX动态呈现? 用 代替

  • 问题内容: 我是Swing的新手。 我要在单击按钮(完成按钮)后更新表格。我认为数据正确,但屏幕无法正常工作。 以下是我程序的说明 选中复选框,然后单击完成按钮 最底层应更改。 没有主 这是我的代码: 问题答案: 而不是这样做… 只需更新现有模型 或简单地 假设您要继续向表中添加新行。如果您要这样做,还可以先清除表,然后再向其中添加新行。 Swing的工作原理是MVC(模型-视图- 控制器 ),该

  • 问题内容: 我正在使用书签功能,其中用户单击jQueryui按钮并将某些信息发送到数据库。但是我没有使用表格,因为没有供用户输入的信息。 我正在从会话数据中提取用户ID,并正在发送URI段(URL的一部分) 使用codeigniter / php。 我试图找出要放在ajax / post函数的数据部分中的内容,因为没有表单/没有输入数据,以及如何处理控制器的“提交”部分。 控制者 模型 的HTML