繁体   English   中英

JavaScript函数的Ajax异步和循环PHP请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM