如何在提交时触发函数但延迟提交直到函数完成-JQuery

时间:2016-05-10 16:40:57

标签: javascript jquery forms

我有一个表单,在提交之前需要运行两个函数。

一个函数将画布图像转换为数据网址,因此需要几秒钟。

主要问题是表单在函数完成之前提交,因此没有数据发送到服务器。

我尝试了各种代码排列,但都失败了。

我已经尝试了

$(document).ready(function() {
    $('#form').submit(function(e) { 
        e.preventDefault();
        function_one();
        function_two();
        $('#form').submit();
    });
});

我已经尝试了

$(document).ready(function() {
    $('#submit').click(function(e) { 
        e.preventDefault();
        function_one();
        function_two();
        $('#form').submit();
    });
});

他们都在没有完成功能的情况下提交表格。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为函数是异步调用的。最快和最简单的解决方法是添加一个setTimeout函数,它只能暂停一小段时间。这可能会使您的问题最容易解决。

其他方面,您需要添加成功事件以将$('#form').submit();置于其中。

答案 1 :(得分:0)

您可以使用PROMISE.JS。你可以添加promisejs添加一个链并等待其他函数等待先前的承诺。您可以参考示例here