如何在AJAX表单提交请求期间显示实时脚本输出?

时间:2016-12-20 18:07:15

标签: javascript jquery ajax

如何展示"实时反馈"在使用jQuery的脚本上?

我有button我用来提交表单进行处理。处理需要很长时间。我希望有一个<div id="progress"></div>,其中显示了订单处理脚本正在执行的实时进度报告。如果一切顺利,我想重定向到View Order脚本,如果没有,只需显示进度报告(不重定向到查看订单)

如何?目前我有这个:

$("#placeorderbutton").click(function(e) {
    e.preventDefault();
    this.innerHTML = 'Placing Order...';
    this.disabled = true; 
    $.ajax({
        type: 'post',
        url: 'process_order.php',
        data: $('form#order').serialize(),
        success: function(data) {
            $("#main").load('view_order.php');            
        }
    });
}); 

即使我的process_order文件中有打印语句,它们也不会显示在屏幕上的任何位置。嗯,当然不是......我不知道如何构建我的jQuery / AJAX来让它们显示出来。

我不知道该怎么办。

1 个答案:

答案 0 :(得分:1)

您需要启动长进程,然后启动计时器以轮询状态。请记住,这不会花费太多,因为它变得比它的价值更高。

$("#placeorderbutton").click(function(e) {
    e.preventDefault();
    this.innerHTML = 'Placing Order...';
    this.disabled = true; 
    $.ajax({
        type: 'post',
        url: 'process_order.php',
        data: $('form#order').serialize(),
        success: function(data) {
            $("#main").load('view_order.php');            
        }
    });
    setTimer($.ajax({
        type: 'post',
        url: 'view_order.php',
        data: $('form#order').serialize(),
        success: function(data) {
            $("#main").append(data);            
        }
    }), 30000);  //check every 30 Seconds
});