繁体   English   中英

如何通过AJAX从PHP文件中获取多个响应?

[英]How to get multiple responses from PHP file via AJAX?

我的PHP文件执行2个操作:1。将表单中的数据提交到db表,2。发送电子邮件。

我想要做的是通过ajax显示状态消息。 例如,“第一次操作完成,请等待第二次”然后当第二次完成时显示下一条消息“第二次操作也完成”。 现在我的ajax看起来像那样。

我怎么修改它?

//add status data to form
        form.data('formstatus', 'submitting');

        if (validate()) {
            //send data to server for validation
            $.ajax({
                url: formUrl,
                type: formMethod,
                dataType: "json",
                data: formData,
                success: function (data) { 
                    $.notifyBar({
                        cls: data.status,
                        html: data.message
                    });
                    form.data('formstatus', 'idle');
                }
            });

        }

如果您要执行两个具有不同执行时间的操作,只需发送两个不同的AJAX查询,并从中获取响应。

将PHP服务分为两部分。 如果第二部分依赖于第一部分,而不是同时发送两个请求,则在第一部分返回时发送第二个请求。

换句话说,在成功回调中,您将通知用户第一个操作已完成,然后继续调用第二个操作,其成功回调将通知第二个操作已完成。

在成功块中,您可以执行另一个 ajax调用。 那是最简单的。 您可以在.success(),. ajaxSucces(),. complete()或.then()函数中执行此操作:$ .ajax(...)。success(...);

理想情况下,您可以通过示例将代码嵌入到函数中

$.ajax({
    url: formUrl,
    type: formMethod,
    dataType: "json",
    data: formData,
    success: function (data) {
        notifyResponse(data); 
        form.data('formstatus', 'idle');
        sendMail();
    }
});

function sendMail() {
    $.get(mailUrl, function(data) {   // or $.post(...
        notifyResponse(data);
    });
}

function notifyResponse(data) {
    $.notifyBar({
        cls: data.status,
        html: data.message
    });
}

另一种不同于stivlo建议的方法是使用一种类似于本答案中解释的长轮询:

如何实施基本的“长轮询”?

不是那么简单,而且在服务器配置上存在更多技术问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM