Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Ajax等待其他函数完成此问题_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Php Ajax等待其他函数完成此问题

Php Ajax等待其他函数完成此问题,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我有两个ajax调用,一个使用.post,另一个使用.ajax进行测试。一个作为间隔检查触发,另一个在foreach循环下发送邮件。问题是,间隔检查只在第二个ajax调用完成后返回结果,而不是在调用期间返回结果,这正是我想要实现的。我得到了我想要的结果-就在t的末尾,我当前的代码是: $("#cdj-email-members").click(function() { $(".cdj-email-content").slideUp(); $(".cdj-send-ema

我有两个ajax调用,一个使用.post,另一个使用.ajax进行测试。一个作为间隔检查触发,另一个在foreach循环下发送邮件。问题是,间隔检查只在第二个ajax调用完成后返回结果,而不是在调用期间返回结果,这正是我想要实现的。我得到了我想要的结果-就在t的末尾,我当前的代码是:

$("#cdj-email-members").click(function() {

    $(".cdj-email-content").slideUp();    
    $(".cdj-send-email").show();

    // Disable the buttons 
    $("#save-email").hide();
    $("#cdj-email-members").hide();
    $("#cdj-test").attr('disabled','disabled');

    // Declare the variables
    var cdj_subject  = $("#cdj-email-form #subject").val();
    var cdj_content  = $("#cdj-email-form textarea").val();
    var cdj_fan_count  = $("#cdj-progressbar").prop('max');
    var cdj_email_members_nonce  = $("#cdj_email_members_nonce").val();

    // Set the interval check
    setInterval(function(){                  

            var data = {
                'action': 'cdj_update_progress_bar',
            };

            $.post(cdjAjax.ajaxurl, data, function(response) {
                var result = jQuery.parseJSON(response);
                console.log(result);
                $("#cdj-progressbar").attr('value', result);
            });

        },500);

        // Send the Ajax request
        $.ajax({
            url: cdjAjax.ajaxurl,
            type: 'POST',
            data: {
                action: 'cdj_email_members',
                nonce: cdj_email_members_nonce,
                'fan_count': cdj_fan_count,
                'subject': cdj_subject,
                'content': cdj_content
            },
        cache: false,
        success: function(data) {

            // Retreive the WordPress response
            var status  = $(data).find('response_data').text();
            var message = $(data).find('supplemental message').text();

            if(status == 'success') {
                console.log(message);
                $(".send-email-success").slideDown();
                $(".send-email-success p.message").text(message);
                $(".send-email-success").delay(4000).fadeOut();

                 // Enable the buttons 
                $("#save-email").show();
                $("#cdj-email-members").show();
                $("#cdj-test").prop('disabled', false);

                // Switch back to content view
                $(".cdj-email-content").delay(2000).slideDown();    
                $(".cdj-send-email").delay(2000).hide();
            }
            else {
                console.log(message);
                $(".send-email-error").slideDown();
                $(".send-email-error p.message").text(message);
                $(".send-email-error").delay(4000).fadeOut();
            }

        }

    });

});
谢谢

问题是setIntervalfunction{..},500;每500毫秒调用一次函数,但第一次调用将仅在第一次500毫秒之后进行,而不是立即进行

这就是为什么$.ajax首先运行的原因

另外,两个调用都是通过HTTP进行的,根据您的服务器配置,可以将对同一URL的两个调用排列在一个队列中,这就是$.ajax等待$.post完成的原因


为了解决这个问题,我将setInterval放在$.ajax success函数中,确保首先调用$.ajax,然后以500毫秒的间隔运行$.post

真的不清楚您希望这段代码做什么。请更详细地解释期望值我需要发送回数据的时间间隔-目前正在等待.ajax在发送之前得到响应。ajax正在接任总裁。post仍然不清楚。您的$.post和$.ajax whatseever之间没有连接。直到$.ajax发送请求之后,间隔才会开始发送$.post。同样,您到底想做什么?代码正在等待,直到它使用cdj_email_members php函数从.ajax接收到响应错误或成功。发生的事情如下。用户单击提交,间隔开始,ajax php电子邮件循环开始。interval应在电子邮件循环继续时发回数据以更新进度条。一旦所有电子邮件都发送完毕,我将终止间隔。我需要在另一个短消息之后添加以下内容:在ajax调用收到响应之前,我不会从间隔中得到任何回复。