php的echo功能是什么?

时间:2019-03-31 23:20:04

标签: php html server-side

我是php的初学者,我想知道echo是做什么的。在不同的情况下,它似乎做着非常不同的事情。这证明了我的意思。
index.php:

<!DOCTYPE html>
<html>
<body>
    <?php
        echo "echoed by php";
    ?>
    <button onclick="buttonClick()">Get stuff from server</button>
    <p id="output"></p>
    <script>
        function buttonClick()
        {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("output").innerHTML = this.responseText;
                }
            };
            xmlhttp.open("GET", "backend.php", true);
            xmlhttp.send();
        }
    </script>
</body>
</html>

backend.php:

<?php
    echo "stuff from server";
?>

第一个回显(index.php中的一个)的行为类似于js中的document.write:它显示一些内容。但是,backend.php中的回显似乎是responseText。

到底是怎么回事? backend.php中的echo是否被编译成纯文本?如果是这样,那会自动成为响应文本吗?

2 个答案:

答案 0 :(得分:0)

Echo只是输出给定的字符串,如果在浏览器中查看,它会将字符串输出到浏览器,如果通过命令行,则将字符串输出到命令行。

在index.php和backend.php中,echo在这两者中都做相同的事情,不同之处在于您正在发送GET请求以获取backend.php的内容,但是您正在直接查看index.php echo在浏览器中。

如果直接在浏览器中查看backend.php,您将以与index.php相同的方式看到回显。

当然,更常见的是,您将使用json / _encode在backend.php中返回一些数据的JSON响应,以使用索引中的JS显示。

我希望这对您有帮助

编辑:直接回答您,没有编译正在进行,echo只是打印出字符串。但是,是的,回显字符串就是响应

答案 1 :(得分:0)

Echo只是将字符串发送到输出缓冲区。还有许多其他的“事物”可以执行此操作,例如printprintfvar_exportvar_dumpprint_r用于数组等。每个事物都有自己的“特征”。

让您感到困惑的是,您忽略了在读取PHP文件时输出HTML文件中的事实。因此,使用echo内联到它时,在输出HTML时,它会命中一些PHP代码,然后服务器执行该代码,从而在那儿产生一些输出,然后继续输出HTML。因此,最后,您将HTML + PHP输出作为源。

在第二个示例中,唯一的输出来自PHP中的echo。但是两者都进入输出缓冲区,该缓冲区最终作为响应的主体发送回客户端。

希望如此。