【发布时间】:2016-02-13 03:44:19
【问题描述】:
我有一个提供标准扩展点的 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 请求?
【问题讨论】:
-
解决这个问题的正确方法是重写小部件的扩展点使用承诺。这种方式很容易让您将异步操作(如 ajax 请求)设置为
beforecreate。 -
我提出了 Sajak 函数。我们有字母 T 吗?是的,vanna,给我 3 个 T。
-
@Kos 很到位。此处不需要同步 XHR
-
如果人们在启动 javascript 时问我 1 条建议,我会说:拥抱 javascript 的异步特性,不要试图与之抗争。
-
这个问题就像在问“我如何以纯文本形式存储我的用户密码?”当然有答案,但不要这样做。
标签: javascript jquery ajax asynchronous