javascript - 在包含另一个函数的函数上返回 false

标签 javascript jquery-ui jquery

我正在使用 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 成功满足条件,我希望更改事件返回 false(IE,重置位置更改),本质上我需要“爬行”回一个函数。我应该怎样做呢?

最佳答案

How should I go about doing this?

你不能(嗯,不合理)。 Ajax 调用是异步的。当 ajax 调用完成时,对 change 进行的 sortable 调用早已返回。

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

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

关于javascript - 在包含另一个函数的函数上返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18695212/

相关文章:

JavaScript 继承和对象属性

javascript - 连接到 fancytree 的可排序在拖放时忘记了其位置

javascript - 'this' 是否引用调用此函数的元素?

javascript - 按钮粘在页面底部 jQuery

javascript - 如何在页面加载后的特定时间添加和删除 HTML 类?

javascript - CSS 未应用于打印

javascript - 在 JavaScript 中从高位和低位 32 位部分创建 64 位整数时,如何防止值太大?

javascript - 在 jQuery 插件加载后做一些事情

javascript - jQuery 获取上一个跨度

javascript - 如何在 jquery 中制作此菜单行为