我是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是否被编译成纯文本?如果是这样,那会自动成为响应文本吗?
答案 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只是将字符串发送到输出缓冲区。还有许多其他的“事物”可以执行此操作,例如print
,printf
和var_export
,var_dump
,print_r
用于数组等。每个事物都有自己的“特征”。
让您感到困惑的是,您忽略了在读取PHP文件时输出HTML文件中的事实。因此,使用echo
内联到它时,在输出HTML时,它会命中一些PHP代码,然后服务器执行该代码,从而在那儿产生一些输出,然后继续输出HTML。因此,最后,您将HTML + PHP输出作为源。
在第二个示例中,唯一的输出来自PHP中的echo。但是两者都进入输出缓冲区,该缓冲区最终作为响应的主体发送回客户端。
希望如此。