我是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";
?>
第一个echo(index.php中的一个)与js中的document.write类似:它显示一些东西。然而,backend.php中的echo似乎是responseText。 到底发生了什么? backend.php中的echo是否编译成纯文本?如果是,那会自动成为响应文本吗?
Echo只是输出它给出的字符串,如果在浏览器中查看它会将字符串输出到浏览器,如果它是通过命令行,那么它将输出字符串到命令行。
在index.php和backend.php中,echo在两者中做同样的事情,区别在于你发送一个GET请求来获取backend.php的内容,但是你直接在浏览器中查看index.php echo 。
如果您在浏览器中直接查看backend.php,您将以与index.php相同的方式查看回声。
当然,更常见的是你会在backend.php中返回一些数据的JSON响应,使用json / _encode在索引中使用JS显示。
我希望这有帮助
编辑:直接回答你,没有编译,echo只是打印出字符串。但是,是的,echo字符串是响应
Echo只是将字符串发送到输出缓冲区。还有许多其他“事物”可以做到这一点,如print
,printf
和var_export
,var_dump
,print_r
for arrays等。每个都有自己的“特征”。
你们两者之间的混淆是你忽略了这样一个事实,即PHP文件中的HTML是在读取该文件时输出的。因此,随着echo
内联到它输出HTML它会点击一些PHP代码并且服务器执行导致那里的一点输出,然后它继续输出HTML。因此,最后您将获得HTML + PHP输出作为源。
在第二个示例中,唯一的输出来自PHP中的echo。但两者都转到输出缓冲区,最终作为响应的主体发送回客户端。
希望有道理。