我正在使用jquery ui和sortable,我希望将它与对变更事件的Ajax调用结合起来:
$("#events").sortable({
change: function (event, ui) {
$.ajax({
type: "POST",
url: "/tasks/updateTaskUserPosition",
dataType: "json",
data: {
taskId: ui.item.data("task-id")
},
success: function (result) {
if (result == "error") {
alert("Not possible!");
return false;
}
}
});
}
});
如果Ajax成功满足条件,我希望change事件返回false(IE,重置位置更改),基本上我需要“抓取”一个函数。我应该怎么做呢?
答案 0 :(得分:2)
我该怎么做呢?
你不能(嗯,不合理)。 Ajax调用是异步的。当ajax调用完成时,对change
进行的可排序调用已经很久了。
虽然你可以(现在)使ajax调用同步,但这通常不是一个好主意,因为它在调用期间锁定了浏览器的UI。 jQuery将在以后的版本中删除async
标志。
所以正确的做法是不依赖于change
中ajax调用的结果;以不同的方式解决问题(如果需要,可能会保存一些状态并恢复该状态)。