Ajax&;PHP-为什么代码可以在本地服务器上工作,但它不能';你不想主持吗?

Ajax&;PHP-为什么代码可以在本地服务器上工作,但它不能';你不想主持吗?,php,jquery,ajax,asynchronous,synchronous,Php,Jquery,Ajax,Asynchronous,Synchronous,我应该如何处理托管服务器上的ajax工作?我试着在酒吧里取得进步。我想“echo$I”在迭代完成时立即显示。在localserver“echo$i”工作并在迭代完成时立即显示$i。在托管时,“echo$i”工作并仅在脚本执行后显示$i。代码在本地服务器上工作,但在主机上不工作。我认为在主机或请求头上设置php很麻烦。我试图找到这个问题的解决办法,但没有找到。请帮帮我 PHP和HTML代码: <?php if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']

我应该如何处理托管服务器上的ajax工作?我试着在酒吧里取得进步。我想
“echo$I

在迭代完成时立即显示。在localserver
“echo$i

工作并在迭代完成时立即显示$i。在托管
时,“echo$i

工作并仅在脚本执行后显示$i。代码在本地服务器上工作,但在主机上不工作。我认为在主机或请求头上设置php很麻烦。我试图找到这个问题的解决办法,但没有找到。请帮帮我

PHP和HTML代码:

<?php

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

    $i = 0;

    echo "<p>$i</p>";
    flush();
    ob_flush();

    while ($i < 5) {
        $i++;
        echo "<p>$i</p>";
        flush();
        ob_flush();
        sleep(1);
    }
    exit();
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Output PHP Script Progress via Ajax - Basic Example</title>
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">

</head>
<body>

<div class="container">
    <h2>Output PHP Script Progress via Ajax - Basic Example</h2>
    <p>Cick button below to run script.</p>
    <form class="" role="form" action="/basic.php" method="post">
        <button type="submit" class="btn btn-primary">Execute Long PHP Script</button>
    </form>

    <div id="progress"></div>
</div>

<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script type="text/javascript" src="./dist/script-basic.min.js"></script>

</body>
</html>

通过Ajax输出PHP脚本进度-基本示例
通过Ajax输出PHP脚本进度-基本示例
单击下面的Cick按钮以运行脚本

执行长PHP脚本
使用Ajax的JS代码:

$(document).ready(function() {
    $("form").submit(function(e) {
        $.ajax({
            url: $(this).attr("action"),
            xhrFields: {
                onprogress: function(e) {
                    console.log(e.target.responseText), $("#progress").html(e.target.responseText)
                }
            },
            success: function(e) {
                console.log(e), $("#progress").html(e + "<h1>done!</h1>")
            }
        }), e.preventDefault()
    })
});
$(文档).ready(函数(){
$(“表格”)。提交(功能(e){
$.ajax({
url:$(this.attr(“操作”),
xhrFields:{
进展情况:职能(e){
console.log(e.target.responseText),$(“#progress”).html(e.target.responseText)
}
},
成功:职能(e){
console.log(e),$(“#进度”).html(e+“完成!”)
}
}),e.预防违约()
})
});

并非所有服务器都提供
HTTP\u X\u请求的
@KIKOSoftware可能是真的,但这里不是这样。这将阻止PHP代码运行。这不是OP所注意到的行为。@Oleg您当前正在做的事情根本不需要ajax调用,而且一切都可以在客户端完成。你是否有一个真实的/实际的例子来说明你真正想要做什么?实际的用例将决定答案,甚至可能是“你不能,因为ajax不是这样工作的”,我想在每次迭代结束时输出$I。在localserver上,逐渐输出$i。在托管$i时,仅在完整脚本完成后才输出。我认为问题在于缓冲。它需要被填满。我说的对吗?不是所有服务器都提供HTTP\u X\u请求的\u和
@KIKOSoftware可能是真的,但这里不是这样。这将阻止PHP代码运行。这不是OP所注意到的行为。@Oleg您当前正在做的事情根本不需要ajax调用,而且一切都可以在客户端完成。你是否有一个真实的/实际的例子来说明你真正想要做什么?实际的用例将决定答案,甚至可能是“你不能,因为ajax不是这样工作的”,我想在每次迭代结束时输出$I。在localserver上,逐渐输出$i。在托管$i时,仅在完整脚本完成后才输出。我认为问题在于缓冲。它需要被填满。我说得对吗?