2015-03-10 4 views
-1

Может кто-нибудь объяснить шаг за шагом цикла запроса и ответа в этом сценарии? И да, это работает (если у вас есть работающий php-сервер).Почему выполняется выполнение php через javascript?

for(var i=0; i<10; i++){ 
    var test = "<?php echo 'test'; ?>"; 
    console.log(test); 
} 

Пожалуйста не попугаи определение Википедии из AJAX или что PHP на стороне сервера и браузер на стороне клиента, я в курсе этих вещей.

Моя проблема в том, что я не могу обернуть мозг вокруг того, что на первом месте в этом сценарии. Моя мысль состоит в том, что js выполняется сначала, и запрос отправляется на сервер, но не будет ли это в основном AJAX? И если js не выполняется первым, как сервер, возможно, знает, чтобы выполнить php (например, echo «test») вместо того, чтобы просто использовать текстовую версию тега php?

+3

Скорее всего, это случай, когда PHP используется для записи javascript, который затем отправляется в браузер в качестве первоначального запроса; и браузер затем выполняет этот javascript .... ничего общего с Ajax .... но поскольку вы не показали весь код или объяснили, что вы делаете, это только предположение –

+0

Это не практический случай , Мне было просто любопытно. Я стараюсь не смешивать мой горошек и картофель на практике, если вы понимаете, что я имею в виду. –

ответ

1

Попробуйте посмотреть на него как на слои. Как я уверен, вы знаете, что php работает на сервере и javascript на клиенте. Это, как я думаю, что она течет

  • страницы визуализируемой должна прийти откуда-то и в этом случае это сервер, к счастью, это также, где PHP запускается на выполнение, так что все PHP код запуска перед отправкой в сервер. i.e: даже эхо-код
  • Эхо-тест уже запущен на сервере, а строка «test» была создана в довольно удачном месте - в объявлении переменной javascript. , так как мы можем видеть, сервер просто отправил «var test = 'test» и не делает никакого javascript, поэтому «var» не имеет значения для сервера
  • , когда это достигает браузера с сервера , это на самом деле имеет смысл и выполняется!

Таким образом, для сервера «var test =» является просто строкой «var test =» test »; в то время как для Javascript в браузере это означает, что переменная test содержит строку «test»

Редактировать: если используется в цикле обработки страницы, отправленной с сервера, когда страница достигает браузера везде, где сценарий echo php появляется, уже есть эхо-строка

+0

Ваш ответ ответил на мой вопрос, спасибо! –

1

Вы запрашиваете файл .php с сервера, который затем анализирует, а затем отображает для обслуживания клиенту. В процессе рендеринга эхо выводит строку, так что var test = "<?php echo 'test'; ?>"; становится var test ="test" на выходе. Браузер интерпретирует вывод (html) и выполняет любой из javascript в этот момент. В сценарии, который вы даете, нет Ajax, поэтому вы можете запутаться.

1

Шаг 1) PHP готовит страницу, которая будет проанализирована вашим браузером. Фактический исходный код, отправленный вашему браузеру:

var test = "test"; 
alert(test); 

Вы должны быть в состоянии увидеть исходный код на итоговой странице и увидеть это. Вы не делаете серверный вызов, вы просто загружаете текст на страницу своего браузера через PHP.

+0

Ах, хорошо, но если я положил его внутри цикла js for. например \t для (var i = 0; i <10; i ++) { \t var test = ""; \t \t console.log (test); \t} Как это работает? –

+0

Как младший поставить выше, точно так же. Все, что вы помещаете через PHP, разрешается до запуска любого javascript, поэтому фактический javascript, который оценивается на странице, имеет var test = "test"; еще раз. Ваш цикл находится в javascript, а не в PHP. – DaOgre

1

Постараюсь поместить это как можно проще. Вы знаете, что 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); 
} 

В вашем скрипте нет ни одного аякса.

Смежные вопросы