javascript - Jquery 等待 AJAX 调用完成

标签 javascript jquery

我有一个用于保存表单数据的 ajax 函数。我希望它保持异步,因为用户可以随时点击保存。但是,我有另一个将表单转换为 PDF 的功能,我希望它在创建 PDF 之前运行保存功能(以防用户添加了更多数据)。有没有办法让 $('input.submit') 在打开 pdf 之前等待保存完成?下面是我正在使用的 jQuery:

$("button#save").on('click', function (){
                $.ajax({
                    type: 'POST',
                    url: '<?php echo matry::base_to('utilities/crm/field_day_save');?>',
                    data: $("form#trip_form").serialize(),
                    dataType: 'json',
                    success: function (data)
                    {
                        $("#alerts").html(data.alert);
                        $("#form_id").val(data.id);
                    }
                    });
            });
        $("input.submit").on('click', function(event){
            event.preventDefault();
            $("button#save").trigger('click');
            window.open('<?php echo matry::base_to('custom_worddocs/field_day');?>' + '&fd_id=' + $("#form_id").val());
        });

简而言之,我希望 $('button#save').click() 保持异步,但我希望 $(input.submit) 等待按钮保存以在打开新窗口之前完成。

最佳答案

jQuery 的 ajax函数返回 jqXHR对象,除其他外,其行为类似于 deferred .

仅从 then 中调用 window.open函数,它将等待 AJAX 完成:

$("button#save").on('click', function () {

    var jqXHR = $.ajax({ /* your config... */ });

    $("input.submit").one('click', function(event) {
        event.preventDefault();
        $("button#save").trigger('click');

        jqXHR.then(function () {
            window.open('<?php echo matry::base_to('custom_worddocs/field_day');?>' + '&fd_id=' + $("#form_id").val());
        });
    });

}

关于javascript - Jquery 等待 AJAX 调用完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901394/

相关文章:

php - 从 AJAX JSON 结果数据填充选择列表

javascript - 如何识别 DOM 何时被更改?

javascript - Sails 套接字不会重新连接

javascript - NodeJS : how to perform Ajax Post with FormData

JavaScript "new Array(n)"和 "Array.prototype.map"怪异

javascript - 对由数字组成的字符串数组进行排序

javascript - 自动滚动以搜索输入字段并且不在移动设备上显示旧的搜索选项

jQuery:更改所有 li 图标的 CSS 类,除了选定的 li 图标

javascript - 我得到体育冠军和第三名的空值

javascript - 如何根据该列标题检查表格行中的单选按钮?