Может ли кто-нибудь объяснить пошаговый цикл запроса и ответа в этом сценарии? И да, это работает (если у вас есть рабочий PHP-сервер).
for(var i=0; i<10; i++){
var test = "<?php echo 'test'; ?>";
console.log(test);
}
пожалуйста не попугайте определение AJAX в Википедии, или что php на стороне сервера, а javascript на стороне клиента, я знаю об этом.
Моя проблема в том, что я не могу обернуть свой мозг, который в этом сценарии стоит первым. Я думаю, что сначала выполняется js, а на сервер отправляется запрос, но разве это не AJAX? И если js не выполняется первым, как сервер может знать, что нужно выполнить php (то есть echo «test»), вместо того, чтобы просто предоставлять текстовую версию тега php?
Попробуйте посмотреть на это как на слои. Как я уверен, вы знаете, что php работает на сервере и javascript на клиенте. Вот как я думаю, что это течет
таким образом, для сервера ‘var test =’ это просто строка ‘var test = «test»;’ в то время как для Javascript в браузере это означает, что переменная test содержит строку ‘test’
Редактировать: если используется в цикле for страницы, отправленной с сервера, когда страница достигает браузера, где бы ни появлялся php-скрипт echo, уже есть отображаемая строка
Вы запрашиваете файл .php с сервера, который затем анализирует, а затем обрабатывает для предоставления клиенту. В процессе рендеринга эхо выводит строку так var test = "<?php echo 'test'; ?>";
становится var test ="test"
на выходе. Браузер интерпретирует вывод (html) и выполняет любой из javascript в этой точке. В предложенном вами сценарии нет Ajax, поэтому вы можете запутаться.
Шаг 1) PHP готовит страницу для анализа вашим браузером. Фактический исходный код, отправленный в ваш браузер:
var test = "test";
alert(test);
Вы должны быть в состоянии просмотреть источник на полученной странице и увидеть это. Вы не делаете вызов на стороне сервера, вы просто загружаете текст на страницу браузера через PHP
Я постараюсь изложить это как можно проще. Вы знаете, что PHP на стороне сервера, а JS на стороне клиента, и вы правы в этом аспекте.
PHP как язык выполняет все, что он делает, чтобы генерировать HTML-контент для отправки клиенту (браузеру). Поэтому, когда вы запускаете свой JavaScript:
for(var i=0; i<10; i++){
var test = "<?php echo 'test'; ?>";
console.log(test);
}
PHP оценивается еще до того, как JavaScript узнает, что он что-то сделал. По сути, ваш маленький скрипт выглядит так:
for(var i=0; i<10; i++){
var test = "test";
console.log(test);
}
В вашем скрипте нет ajax.