Ajax&;PHP-为什么代码可以在本地服务器上工作,但它不能';你不想主持吗?
我应该如何处理托管服务器上的ajax工作?我试着在酒吧里取得进步。我想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']
“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时,仅在完整脚本完成后才输出。我认为问题在于缓冲。它需要被填满。我说得对吗?