小编典典

如何让 jQuery 执行同步而不是异步的 Ajax 请求?

all

我有一个提供标准扩展点的 JavaScript 小部件。其中之一是beforecreate功能。它应该返回false以防止创建项目。

我已经使用 jQuery 在这个函数中添加了一个 Ajax 调用:

beforecreate: function (node, targetNode, type, to) {
  jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),

  function (result) {
    if (result.isOk == false) 
        alert(result.message);
  });
}

但我想阻止我的小部件创建项目,所以我应该false在母函数中返回,而不是在回调中。有没有办法使用 jQuery 或任何其他浏览器内 API 执行同步
AJAX 请求?


阅读 100

收藏
2022-02-25

共1个答案

小编典典

jQuery 文档中:您将 异步 选项指定为 false
以获取同步 Ajax 请求。然后你的回调可以在你的母亲函数继续之前设置一些数据。

如果按照建议进行更改,您的代码将如下所示:

beforecreate: function (node, targetNode, type, to) {
    jQuery.ajax({
        url: 'http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),
        success: function (result) {
            if (result.isOk == false) alert(result.message);
        },
        async: false
    });
}
2022-02-25