"有一个提供标准扩展的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);
});
}
"
您可以通过调用将jQuery的Ajax设置设置为同步模式
jQuery.ajaxSetup({async:false});
然后使用执行您的Ajax调用 jQuery.get( ... );
然后再打开一次
jQuery.ajaxSetup({async:true});
我想它和@Adam建议的结果是一样的,但是对于那些想重新配置它jQuery.get()或者jQuery.post()更复杂的jQuery.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
});
}