Javascript 在其他函数完成后执行函数

标签 javascript jquery ajax function

我有一个名为保存的函数:

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/

相关文章:

javascript - Ajax 不返回结果

javascript - HTML5/Javascript 以一定 Angular 在屏幕上移动对象

javascript - 如何使用 bootstrap-select 在每个选择选项上添加工具提示

php - 检索 php 文件中的 jquery post

javascript - 我的 useState 有问题吗?我觉得我的 Array ReactNative 中的值不正确

javascript - 使用javascript从对象中删除项目的更好方法是什么

jquery - 单击复选框时更改唯一的行表颜色

javascript - 如何大致找出什么 javascript 控制网页上一般元素的行为?

javascript - Ajax 调用总是返回成功

所有 IE 版本中的 jQuery .load() 问题