I call sortable.stop() to make an ajax call to store some data after drag & drop operation.
When the ajax call returns an error (application logic error or net problem) I want to move the dragged element to its original/start position, how can I achieve it?
The scenario should be
sortable.stop() event is called, it triggers an ajax callstop() event we get the ajax errorSteps 6-8 are shown to clarify a successive drag can be done and previous error must be forgotten.
Have a look at .sortable('cancel'); something like this:
var list = $('#some-list')
list.sortable(
{
    // Some options.
    stop: function()
    {
        $.post('some-url', someData, function()
        {
            if (somethingWentWrong)
            {
                list.sortable('cancel');
            }
        });
    }
});
                        Thanks to dafi - this works for me:
$('#some-list').sortable({
  // other options here,
  receive: function(event, ui) {
    // ajax or function here
    if(somethingWentWrong) {
       $(this).sortable('cancel');
       $(ui.sender).sortable('cancel');
    }
  }
 });
I'm not sure if you need $(this).sortable('cancel');, but I figure it's best to cancel the source and the destination sortable lists. This way the list item reverts immediately. Other Sortable options here.
Thanks, liveat60fps , its the second statement out of the two which you only need.
$('#some-list').sortable({
      // other options here,
  receive: function(event, ui) {
    // ajax or function here
    if(somethingWentWrong) {
       $(this).sortable('cancel');
       $(ui.sender).sortable('cancel');
    }    
  }    
});
This way on a certain condition, you can revrt back to the orignal state.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With