我有一个名为保存的函数:
function save(callback){
var ed=tinyMCE.get('body');
var data=ed.getContent();
$('#saving').show();
$('#save_err').hide();
$.post('/article/ajax/save',{title:$('#title').val(),body:data,token:token,aid:<?php echo $article_id; ?>},function(d){
$('#saving').hide();
if(d.suc==1){
$('#saved').show();
setTimeout(function(){$('#saved').hide()},2000);
}else{
$('#save_err').html(d.err).show();
}
return true;
},"JSON");
};
当单击元素 #preview 时,我希望保存以执行,并在函数完成后进行重定向。
$('body').on('click','#preview',function(){
save(function(){
window.open('/article/preview/<?php echo $article_id; ?>','_blank');
});
});
我已经使用了这里接受的答案和评分最高的答案,但都不起作用。重定向发生在函数完成之前。 Execute jquery function after another function completes
我也尝试过:
$('body').on('click','#preview',function(){
$.when(save()).done(function(){
window.open('/article/preview/<?php echo $article_id; ?>','_blank');
});
});
我做错了什么?
最佳答案
在以下方法的上下文中
$('body').on('click','#preview',function(){
save(function(){
window.open('/article/preview/<?php echo $article_id; ?>','_blank');
});
});
您需要调用作为参数传递的回调方法。
function save(callback){
$.post(url,function(d){
$('#saving').hide();
if (d.suc == 1) {
$('#saved').show();
setTimeout(function () {
$('#saved').hide();
//CALL THE METHOD
callback();
}, 2000);
} else {
$('#save_err').html(d.err).show();
}
},"JSON");
};
关于Javascript 在其他函数完成后执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30606021/