问题

我有一个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请求?



解决方法

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
    });
}



相关问题推荐