[英]Ajax Async and Cyclic PHP request from JavaScript function
愚蠢的问题。 我在同一目录中有两个页面:“ Index.html ”和“ func.php ”。 我试图每2秒调用一次PHP页面,得到它的ECHO并将其显示在段落元素上。 没错,但是段落文本不会改变(并保持0),这是代码:
的index.html
<html>
<body>
<?php
int cont = 0;
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js" type="text/javascript"></script>
<script>
req()
{
$.ajax({url: "func.php"}, success: function(data) {
document.getElementById("p1").innerHTML = data;
});
setInterval(req(), 2000);
};
$('document').ready(function(){
setInterval(req(), 2000);
});
</script>
<p id="p1">0</p>
</body>
func.php
<?php
cont++;
echo cont;
?>
有什么帮助吗?
解决了以上第一个评论中提到的PHP语法问题后,javascript也出现了问题: func.php
之后的}
放错了位置,需要并且需要将其放在ajax回调函数的末尾。 在req()
函数中不需要setInterval()
,因为在调用函数时可以满足该要求。 还有一个缺失function
的定义之前req()
函数。
为了达到此目的,您将需要使用PHP会话,如第二条注释中所述。 实际上,您不需要index.html文件中的PHP代码。 这是一个可能的解决方案:
index.html的:
<html>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js" type="text/javascript"></script>
<script>
function req()
{
$.ajax({url: "func.php", success: function(data) {
document.getElementById("p1").innerHTML = data;
}});
};
$('document').ready(function(){
setInterval(function(){req();}, 2000);
});
</script>
<p id="p1">0</p>
</body>
</html>
func.php:
<?php session_start();
if(!isset($_SESSION['cont'])){
$_SESSION['cont'] = 0;}
else
{$_SESSION['cont'] += 1; }
echo $_SESSION['cont'];
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.