I would do something similar to Zendesk.
You click a button saying "Edit Order", and when you're done say "Save Order" or something to that effect. These can be Ajax calls to make it more usable, but can also be page refreshes, allowing for degrading gracefully.
So it would be some thing like:
<ul>
<li><input type="hidden" name="item1" value="1" />Item 1</li>
<li><input type="hidden" name="item2" value="2" />Item 2</li>
<li><input type="hidden" name="item3" value="3" />Item 3</li>
<li><input type="hidden" name="item4" value="4" />Item 4</li>
</ul>
When you move the items around, this would change the value of the hidden field.
When you post this for you could use those values in an update statement, making one call only. Something like:
UPDATE `things` SET `order` = $value WHERE `name` = $name;
It might not be efficient in this case as there would be 4 SQL statements, although there might be another way to solve this.
I think the main advantage is that you would always have a logical order of 1,2,3,4 instead of anything else if your JavaScript is well written.