实时ajax内容加载


Live ajax content loading

如何动态解析ajax发送请求的php文件返回的内容?

我的代码:

jQuery(function () {
    var request = jQuery.ajax({
        url: "ajax/db.php",
        type: "POST",
        data: {
            addresses: '<?php echo implode(' * ', $addresses); ?>'
        }
    });
    request.done(function (msg) {
        jQuery("#response").append(msg);
    });
    request.fail(function (jqXHR, textStatus) {
        alert("Request failed: " + textStatus);
    });
});

ajax/db.php

<?php
    echo 'hello';
    sleep (5);
    echo 'world';

我想要实现的是动态显示ajax/db.php文件响应——首先将hello字符串附加到#response对象中,在睡眠5秒后,它应该附加另一段字符串——world

目前,代码只是在5秒钟后追加整个输出。

有没有办法让它像实时响应一样工作?

这就是PHP服务器的工作方式。1个请求,1个输出。

如果你想在sleep()之前和之后发送数据,你可以使用ob_flush()吗?

像这样的东西(很抱歉很久以前我用过这个,所以如果不工作就不要拍摄)

<?php
    echo 'hello';
    ob_flush();
    flush();
    sleep (5);
    echo 'world';

sleep(5)停止PHP执行,因此在执行终止之前不会向浏览器返回任何内容。Javascript需要再等5秒才能得到整个响应,仅此而已。如果你想把响应分成多个部分,你必须依次发出两个Ajax请求。