Row-Reorder Function Calling Ajax Multiple Time to Save Position in Database --2

Row-Reorder Function Calling Ajax Multiple Time to Save Position in Database --2

rajrathodbvnrajrathodbvn Posts: 2Questions: 2Answers: 0

Hi!
I have datatable Like this

oInnerTable = $("#url_table_" + rotator_id).DataTable({
                         "processing": true,
                         "serverSide": true,
                          rowReorder: {
                              dataSrc: [1]
                              
                          },
                         "ajax":{
                            url :"actions/data_url_response.php",
                            type: "post",
                            data: function ( d ) {
                                var url_status = $('.url_status').val();
                                d.rotator_id = rotator_id;
                                d.url_status = url_status;
                            }
                          },
                          autoWidth: false,
                          columnDefs: [
                            { "visible": false, "targets": 0 },
                            { orderable: true, className: 'reorder', targets: 0 },
                            { 
                                "targets":[0, 7],
                                "orderable":false,
                            },
                            {
                                targets: 0,
                                render: function (data, type, row) {
                                    return '<div class="form-check"><input type="checkbox" class="form-check-input position-static select_ids" value="'+row[0]+'"></div>';
                                }
                            },

                         ],
                            dom: '<"datatable-scroll"t><"datatable-footer"ip>',
                            language: {
                                search: '<span>Filter:</span> _INPUT_',
                                searchPlaceholder: 'Type to search...',
                                lengthMenu: '<span>Show:</span> _MENU_',
                                paginate: { 'first': 'First', 'last': 'Last', 'next': $('html').attr('dir') == 'rtl' ? '&larr;' : '&rarr;', 'previous': $('html').attr('dir') == 'rtl' ? '&rarr;' : '&larr;' }
                            }
                    });

And Update function is like below

var positionArray = [];
        oInnerTable.on( 'row-reorder', function ( e, diff, edit ) {
                
               for ( var i=0, ien=diff.length ; i<ien ; i++ ) {
                    var rowData = oInnerTable.row( diff[i].node ).data();
                    positionArray.push({
                        myid:rowData[0],
                        mypositiion: diff[i].newData
                    });
                }
                
                if (positionArray.length>0) {
                    $.post("/link-to-script.php", {
                    positionArray: positionArray
                    }, function(data, status) {
                        positionArray = [];
                    })
                } ;
                
            } );

Since I have three rows in table, everytime when I change position, its calling ajax three time and sometime its even more time, Its not possible that its fire only one time and I can send position data to server with single ajax call?

Thanks!

Answers

  • colincolin Posts: 15,240Questions: 1Answers: 2,599

    As shown in this example, the event is only being triggered once per move. I'm not sure why yours would trigger more.

    We're happy to take a look, but as per the forum rules, please link to a test case - a test case that replicates the issue will ensure you'll get a quick and accurate response. Information on how to create a test case (if you aren't able to link to the page you are working on) is available here.

    Cheers,

    Colin

Sign In or Register to comment.