Seu código é dividido em duas partes totalmente separadas, o lado do servidor e o lado do cliente .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Os dois lados se comunicam via solicitações e respostas HTTP. O PHP é executado no servidor e gera algum código HTML e talvez JavaScript que é enviado como resposta ao cliente onde o HTML é interpretado e o JavaScript é executado. Depois que o PHP concluir a saída da resposta, o script será encerrado e nada acontecerá no servidor até que uma nova solicitação HTTP seja recebida.
O código de exemplo é executado assim:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Etapa 1, o PHP executa todo o código entre as <?php ?>
tags. O resultado é este:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
A file_put_contents
chamada não resultou em nada, apenas escreveu "+ foo +" em um arquivo. A <?php echo 42; ?>
chamada resultou na saída "42", que agora está no local em que esse código costumava estar.
Agora, esse código HTML / JavaScript resultante é enviado ao cliente, onde é avaliado. A alert
chamada funciona, enquanto a foo
variável não é usada em nenhum lugar.
Todo o código PHP é executado no servidor antes que o cliente comece a executar qualquer JavaScript. Não existe nenhum código PHP na resposta com a qual o JavaScript possa interagir.
Para chamar algum código PHP, o cliente precisará enviar uma nova solicitação HTTP para o servidor. Isso pode acontecer usando um dos três métodos possíveis:
- Um link, que faz com que o navegador carregue uma nova página.
- Um envio de formulário, que envia dados ao servidor e carrega uma nova página.
- Uma solicitação AJAX , que é uma técnica Javascript para fazer uma solicitação HTTP regular para o servidor (como 1. e 2. will), mas sem sair da página atual.
Aqui está uma pergunta descrevendo esses métodos com mais detalhes
Você também pode usar o JavaScript para fazer o navegador abrir uma nova página usando window.location
ou enviando um formulário, emulando as possibilidades 1. e 2.
window.open
ou carregar uma página usando um iframe.