0

我正在使用 jquery ui 和可排序的,我想将它与更改事件的 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 成功时满足条件,我希望更改事件返回 false(IE,重置位置更改),本质上我需要“抓取”一个函数。我该怎么做呢?

4

1 回答 1

2

我该怎么做呢?

你不能(嗯,不合理)。Ajax 调用是异步的。到 ajax 调用完成时,可排序的调用change早已返回。

虽然您可以(目前)使 ajax 调用同步,但这通常不是一个好主意,因为它会在调用期间锁定浏览器的 UI。jQuery 将async在未来版本中删除该标志。

所以正确的做法是不要依赖ajax调用的结果change;以不同的方式解决问题(也许保存一些状态并在需要时恢复该状态)。

于 2013-09-09T09:29:07.220 回答