我有一个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);
});
}
Run Code Online (Sandbox Code Playgroud)
但我想阻止我的小部件创建项目,所以我应该返回false母函数,而不是回调.有没有办法使用jQuery或任何其他浏览器中的API执行同步AJAX请求?
我正在尝试使用JQuery,虽然我在努力成功等待ajax调用成功然后执行更多代码.有没有办法等待ajax打电话?我见过一些例子,但似乎只是盲目地等待x秒钟?
谢谢,詹姆斯
如果我想分离出我的ajax success函数,以便它在我的其他地方定义<script>,它是否必须在我的内部
$(document).ready(function()
{
Run Code Online (Sandbox Code Playgroud)
部分还是可以与非jQuery javascript函数一起定义?
$.ajax(
{
url: '/load_prayer',
cache: false,
dataType: 'json',
type: 'POST',
data: ({ 'prayerId' : prayerId }),
success: function(data)
{
$('#prayer_date').html(data.Date);
console.log(data);
},
error: function(e, xhr)
{
console.log(e);
}
});
Run Code Online (Sandbox Code Playgroud)
我不想在调用中定义它的原因ajax是它最终将是一个大函数,如果它与其他ajax调用参数混合在一起会令人困惑.
例如,这会工作:
$.ajax(
{
url: '/load_prayer',
cache: false,
dataType: 'json',
type: 'POST',
data: ({ 'prayerId' : prayerId }),
success: handlePrayer(data),
error: function(e, xhr)
{
console.log(e);
}
});
handlePrayer(data)
{
$('#prayer_date').html(data.Date);
console.log(data);
}
Run Code Online (Sandbox Code Playgroud)