views:

205

answers:

1

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

  1. user drags A to B
  2. the sortable.stop() event is called, it triggers an ajax call
  3. the ajax call returns an error
  4. inside the stop() event we get the ajax error
  5. move A to its original position
  6. user again move A to B
  7. everything is ok
  8. A remains in its new position in B

Steps 6-8 are shown to clarify a successive drag can be done and previous error must be forgotten

+1  A: 

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');
            }
        });
    }
});
Will Vousden
Under the stop() callback it doesn't work so I've used receive() instead of stop() and canceled drop with $(ui.sender).sortable('cancel');
dafi