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

时间:2018-09-12 12:27:13

标签: jquery ajax laravel datatable

在我的Laravel Web应用程序中,我正在使用datatable显示数据。我的表对vieweditdelete有3个动作。 为了进行编辑和查看,我使用了Bootstrap 4模式。

这是数据表的视图。 enter image description here

这是我在模式上进行编辑的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请求不会启动,并且显示空模式。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

private void btnCreateCategory_Click(object sender, EventArgs e)
    {
        List<string> FieldNames = new List<string>();

        foreach (var item in lstFieldNames.Items)
        {
            FieldNames.Add(lstFieldNames.Items.ToString());
        }

        var grpfieldNames = FieldNames.Distinct();

        DataTable NewCategory = new DataTable();

        NewCategory = CreateTable(grpfieldNames);

        dgPreviewAdd.DataSource = NewCategory;

        using (SqlConnection Connection = new SqlConnection(
           Helper.cnnVal("InventoryManager")))
        {
            using (SqlCommand command = new SqlCommand("", Connection))
            {
                command.CommandText = "Create Table tbl" +
                    NewCategory.TableName.ToString() + "(ID int)";

                Connection.Open();
                command.ExecuteNonQuery();
                Connection.Close();

                foreach (DataColumn newColumn in NewCategory.Columns)
                {
                    If(newColumn.ColumnName("ID")
                      {
                    }
                    Else
                      {
                        SqlParameter colparam = new SqlParameter();
                        colparam.ParameterName = "@ColumnName";
                        colparam.Value = newColumn.ColumnName.ToString();

                        SqlParameter tblParam = new SqlParameter();
                        tblParam.ParameterName = "@TableName";
                        tblParam.Value = "tbl" + NewCategory.TableName.ToString();

                        command.Parameters.Add(colparam);
                        command.Parameters.Add(tblParam);
                        command.CommandText = "dbo.AddCategoryColumns";
                        command.CommandType = CommandType.StoredProcedure;

                        Connection.Open();
                        command.ExecuteNonQuery();
                        Connection.Close();
                    }
                }

                LoadCategory catTableLoad = new LoadCategory();
                DataTable catTable = new DataTable();
                catTable = catTableLoad.getCategoryTable();

                SqlParameter param = new SqlParameter();
                param.ParameterName = "@CategoryName";
                param.Value = NewCategory.TableName.ToString();

                SqlParameter param2 = new SqlParameter();
                param2.ParameterName = "@IdNumber";
                param2.Value = catTable.Rows.Count + 1;

                command.Parameters.Add(param);
                command.Parameters.Add(param2);

                command.CommandText = "dbo.AddCategory";
                command.CommandType = CommandType.StoredProcedure;

                Connection.Open();
                command.ExecuteNonQuery();
                Connection.Close();
            }
        }
    }

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