#php #html #server-side
#php #HTML #на стороне сервера
Вопрос:
Я новичок в 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 amp;amp; 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 ) действует аналогично document.write в js: он что-то отображает. Эхо в backend.php однако, похоже, это responseText .
Что именно происходит? Передает ли echo в backend.php компилируется в обычный текст? Если да, становится ли это автоматически текстом ответа?
Комментарии:
1. Все они являются «обычным текстом»:
echo
просто печатает все, что вы просили, это не несет никакой дополнительной семантики.2. Вам нужно подумать о различных слоях, работающих в вашем приложении.
3. Отличное место, чтобы узнать о подобных вещах, находится в руководстве по PHP: php.net/manual/en/function.echo.php
4. Echo отправляет вывод в выходной буфер, если он встроен в HTML (который также отправляется в выходной буфер), тогда кажется, что он записывает это в «источник». Что он в принципе и делает, но только потому, что также выводится исходный код. Итак, во втором примере выводится только echo, в первом — комбинация HTML и PHP по мере выполнения.
Ответ №1:
Echo просто выводит строки, которые ему заданы, при просмотре в браузере он будет выводить строки в браузер, если это через командную строку, то он будет выводить строки в командную строку.
В index.php и backend.php echo делает одно и то же в обоих, разница в том, что вы отправляете запрос GET для получения содержимого backend.php однако вы просматриваете index.php эхо прямо в браузере.
Если вы непосредственно просматриваете backend.php в вашем браузере вы увидите echo таким же образом, как index.php .
Конечно, чаще всего вы возвращаете JSON-ответ с некоторыми данными в backend.php использование json /_encode для отображения с использованием JS в индексе.
Я надеюсь, что это помогло
Редактировать: чтобы ответить вам напрямую, компиляция не происходит, echo просто распечатывает строку. Однако да, строка echo является ответом
Ответ №2:
Echo просто отправляет строки в выходной буфер. Есть много других «вещей», которые делают это, таких как print
, printf
и var_export
, var_dump
print_r
для массивов и т.д. У каждого свои «черты».
Что вас смущает между этими двумя, так это то, что вы пренебрегаете тем фактом, что HTML в файле PHP выводится при чтении этого файла. Таким образом, с echo
встроенным в это при выводе HTML-кода он попадает на фрагмент PHP-кода, и сервер выполняет это, что приводит к небольшому выводу там, затем он продолжает выводить HTML. Итак, в конце вы получаете свой вывод HTML PHP в качестве исходного кода.
Во втором примере единственным выводом является echo в PHP. Но оба отправляются в выходной буфер, который в конечном итоге отправляется как тело ответа обратно клиенту.
Надеюсь, это имеет смысл.