Ajax 请求不适用于数据表分页

Posted

技术标签:

【中文标题】Ajax 请求不适用于数据表分页【英文标题】:Ajax request not working on datatable pagination 【发布时间】:2019-02-17 02:15:39 【问题描述】:

在我的Laravel Web 应用程序中,我使用datatable 来显示数据。我的表对vieweditdelete 有3 个操作。 对于编辑和查看,我使用Bootstrap 4 modal。

这是数据表的视图..

这是我在模态上编辑的 ajax 请求代码:

$.ajax(
      type:'GET',
      url:"route('user.edit')",
      data:'id':user_id,
      success:function(data)
        var role;
        if(data.role_id == 1)
            role = 'Admin';
        else if(data.role_id == 2)
            role = 'Seller';
        else
            role = 'Publisher';
        
        $(header).empty();
        $(header).append('<h3>'+data.details.name+'\'s details</h3>');
        $('#name').empty();
        $('#name').val(data.details.name);
        $('#email').empty();
        $('#email').val(data.details.email);
        $('#contact').empty();
        $('#contact').val(data.details.contact);
        $('#address').empty();
        $('#address').val(data.details.address);
        $('#user_id').empty();
        $('#user_id').val(data.details.id);
        $.each(data.roles, function(index,val)
            if(data.details.role_id == val.id)
                var selected = 'selected';
            $('#role').append('<option '+selected+' value="'+val.id+'">'+val.role_name+'</option>');

        );
    
);

现在第一页一切正常。但是当我在datatable 中搜索某些内容或通过分页转到另一个页面时,我的ajax 请求不起作用。我正在使用类来调用 ajax 请求。当我转到另一个页面或搜索数据并单击编辑时,只有模式打开 ajax 请求不会启动,它显示空模式。 我该如何解决这个问题?

【问题讨论】:

控制台有什么提示吗?此外,删除 empty() 调用。它们是多余的。 您是在刀片中执行此操作吗? Vue 前端? Laravel 实际上有一个超级简单/容易的数据表包。 yajrabox.com/docs/laravel-datatables/master/installation 。如果您在刀片中,只需将所有数据从连接到刀片的控制器发送回,循环通过它构建一个在其上调用 jQuery 的表。 @Mark Walet 控制台很干净。当我转到其他页面时,ajax 只是没有激活.... @Brad 我正在使用 Blade。非常感谢您的建议。但是有什么办法可以解决我的问题吗? 【参考方案1】:
$(document).on('click', '.your_button', function()
   //code for action
);

事件处理程序仅处理代码执行时存在于 dom 中的那些元素,因此需要使用基于委托的事件处理程序。试试这个

【讨论】:

非常感谢您的解决方案!它工作得很好。你能解释情况真是太好了。完美的答案。

以上是关于Ajax 请求不适用于数据表分页的主要内容,如果未能解决你的问题,请参考以下文章

具有服务器端分页/排序的 DevExtreme 数据网格不适用于过滤

PrimeFaces 4.0/JSF 2.2.x 中的文件上传不适用于 AJAX - javax.servlet.ServletException:请求内容类型不是多部分/表单数据

Ajax 不适用于 javascript。我应该做些啥?

使用 php 对 Mysql 的 Ajax JQuery 请求不适用于 JSON

ajaxSetup 不适用于 Rails / jquery-ujs

AJAX .val() 或 .text() 不适用于 textarea?