我有一个JavaScript小部件,它提供标准的扩展点.其中之一是beforecreate函数.它应返回false以防止创建项目.
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 documentation:您将异步选项指定为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
});
}