Shefarol Soluções Web

AJAX - Introdução - Voltar

O AJAX trata da atualização de partes de uma página da Web, sem recarregar a página inteira.

AJAX = JavaScript assíncrono e XML.

O AJAX permite que as páginas da Web sejam atualizadas de forma assíncrona, trocando pequenas quantidades de dados com o servidor (back-end). Isso significa que é possível atualizar partes de uma página da Web sem recarregar a página inteira.

As páginas da Web clássicas (que não usam AJAX) devem recarregar a página inteira se o conteúdo for alterado.

O AJAX é baseado em padrões da Internet e usa uma combinação de:

Referência: https://www.w3schools.com/php/php_ajax_intro.asp

No exemplo abaixo, quando um usuário digita um caractere no campo de entrada, uma função chamada "mostraDica()" é executada.

A função é acionada pelo evento onkeyup.

Comece a digitar um nome no campo abaixo:

Sugestões:

Código em HTML
<form action="">
	<label for="nome" class="mb-0"><b>Nome:</b></label>
	<input type="text" id="nome" name="nome" onkeyup="mostraDica(this.value)"autofocus>
</form>

<p><b>Sugestões:</b> <span id="txtHint"></span></p>
Código em Javascript
<script>
	function mostraDica(str) {
		if (str.length == 0) {
			document.getElementById("txtHint").innerHTML = "";
		    return;
		} else {
		    var xmlhttp = new XMLHttpRequest();
		    xmlhttp.onreadystatechange = function() {
		    	if (this.readyState == 4 && this.status == 200) {
		        	document.getElementById("txtHint").innerHTML = this.responseText;
		    	}
		    };
		    xmlhttp.open("GET", "nomes.php?q=" + str, true);
		    xmlhttp.send();
		}
	}
</script>

Explicação do código:

Primeiro, verifica se o campo de entrada está vazio (str.length == 0). Se estiver, limpa o conteúdo do espaço reservado txtHint e sai da função.

Caso contrário, se o campo de entrada não estiver vazio, faça o seguinte:

O arquivo PHP verifica uma matriz de nomes em um arquivo chamado nomes.php e retorna o(s) nome(s) correspondente(s) ao navegador:

Abaixo o exemplo do arquivo chamado nomes.php:

Código em PHP
<?php
  // Array com os nomes
  $a[] = "Ana";
  $a[] = "Beatriz";
  $a[] = "Carolina";
  $a[] = "Diana";
  $a[] = "Eva";
  $a[] = "Fiona";
  $a[] = "Fabio";
  $a[] = "Sheila";
  $a[] = "Gabriela";
  $a[] = "Bernardo";
  $a[] = "Heitor";
  $a[] = "Indaia";
  $a[] = "Joana";
  $a[] = "Karen";
  $a[] = "Linda";
  $a[] = "Nina";
  $a[] = "Ofelia";
  $a[] = "Petunia";
  $a[] = "Amanda";
  $a[] = "Raquel";
  $a[] = "Cindy";
  $a[] = "Gustavo";
  $a[] = "Guilherme";
  $a[] = "Doris";
  $a[] = "Hamilton";
  $a[] = "Maria";
  $a[] = "Evelein";
  $a[] = "Ivone";
  $a[] = "Igor";
  $a[] = "Patricia";
  $a[] = "Evita";
  $a[] = "Matheus";
  $a[] = "Joao";
  $a[] = "Jeanete";
  $a[] = "Sonia";
  $a[] = "Kenia";
  $a[] = "Luis";
  $a[] = "Pedro";
  $a[] = "Tamires";
  $a[] = "Tamara";
  $a[] = "Violeta";
  $a[] = "Renato";
  $a[] = "Yara";
  $a[] = "Leonardo";
  $a[] = "Wanda";
  $a[] = "Elizabete";
  $a[] = "Elen";
  $a[] = "Wagner";
  $a[] = "Vitoria";
  $a[] = "Marcia";
  $a[] = "Monica";

  // Obtém o parâmetro "q" da URL
  $q = $_REQUEST["q"];

  $hint = "";

  // Procura todos os nomes do array se $q for diferente de ""
  if ($q !== "") {
    $q = strtolower($q);
    $len=strlen($q);
    foreach($a as $name) {
      if (stristr($q, substr($name, 0, $len))) {
        if ($hint === "") {
          $hint = $name;
        } else {
          $hint .= ", $name";
        }
      }
    }
  }

  // Mostra "Não encontrado!" se nenhum nome foi encontrado ou mostra os nomes encontrados com as letras digitadas
  echo $hint === "" ? "Não encontrado!" : $hint;
?>