English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Após criar o objeto XMLHttpRequest (ver o capítulo anterior), devemos enviar a solicitação para o servidor.
Para enviar a solicitação para o servidor, usamos dois métodos do objeto XMLHttpRequest:
open()
send()
httpRequest.open("GET", "ajax_intro.txt", true); httpRequest.send();
O método open() aceita três parâmetros:
O primeiro parâmetro é o método de solicitação HTTP-GET, POST
O segundo parâmetro é a URL para onde você enviará a solicitação
O terceiro parâmetro opcional configura se a solicitação é assíncrona (o padrão é true)
O método send() aceita um parâmetro opcional:
Para solicitações GET, não passar nenhum valor
Para solicitações POST, passarnome=valorpara
emGETNo método, o navegador colocará o conteúdo do formulário (nome/pares de valores) ao final da URL.
GET geralmente é usado em formulários simples onde não se preocupa com a segurança. GET oferece muitos benefícios para formulários simples.
As solicitações GET podem ser armazenadas em cache
As solicitações GET ficam no histórico do navegador
As solicitações GET podem adicionar favoritos
Nunca use solicitações GET ao lidar com dados sensíveis
As solicitações GET têm limite de comprimento (apenas2048caracteres)
emPOSTNo método, o conteúdo não é exibido na URL.
Se os dados do formulário contiverem informações sensíveis ou pessoais, sempre use POST.
As solicitações POST nunca são armazenadas em cache
As solicitações POST não ficam no histórico do navegador
As solicitações POST não podem adicionar favoritos
Use solicitações POST ao lidar com dados sensíveis
As solicitações POST não têm limite de comprimento de dados
O exemplo a seguir mostra como enviar uma solicitação Ajax GET simples usando JavaScript:
httpRequest.open("GET", "ajax_get.php", true); httpRequest.send();Teste e veja‹/›
No exemplo acima, você pode obter resultados armazenados em cache. Para evitar isso, adicione um número aleatório à URL:
httpRequest.open("GET", "ajax_get.php?r=" + Math.random(), true); httpRequest.send();Teste e veja‹/›
Se você desejar enviar informações usando o método GET, adicione as informações à URL:
httpRequest.open("GET", "ajax_get.php?fname=Seagull&lname=Anna", true); httpRequest.send();Teste e veja‹/›
O exemplo a seguir mostra como enviar uma solicitação Ajax POST simples usando JavaScript:
httpRequest.open("POST", "ajax_post.php", true); httpRequest.send();Teste e veja‹/›
Se você deseja enviar informações usando o método POST, use o setRequestHeader() para configurar os cabeçalhos HTTP e especifique os dados a serem enviados no método send():
httpRequest.open("POST", "ajax_post.php", true); httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); httpRequest.send("fname=Seagull&lname=Anna");Teste e veja‹/›
O método setRequestHeader() aceita dois parâmetros:
O primeiro parâmetro especifica o nome do cabeçalho
O segundo parâmetro especifica o valor do cabeçalho
O segundo parâmetro (url) do método open() é o endereço do arquivo no servidor.
httpRequest.open("GET", "ajax_get.php", true);
O AJAX pode enviar e receber várias formatos de informações, incluindo JSON, XML, HTML, PHP, ASP, texto, etc.
O objeto XMLHttpRequest permite que você defina funções a serem executadas para lidar com as respostas.
A função de resposta onreadystatechange é definida na propriedade do objeto XMLHttpRequest.
httpRequest.onreadystatechange = function() { if (this.readyState === 4 && this.status === 200) { document.getElementById("output").innerHTML = this.responseText; } };Teste e veja‹/›
Você aprenderá mais sobre a propriedade onreadystatechange na parte posterior deste tutorial.
O terceiro parâmetro do método open() especifica se a requisição éAssíncronoouSíncrono.
Para enviarSíncronoPara fazer a requisição, altere o terceiro parâmetro do método open() parafalse.
Se for usadoSíncronoSe a requisição for feita, não é necessário especificar a função de resposta:
var httpRequest = new XMLHttpRequest(); httpRequest.open("GET", "ajax_intro.txt", false); httpRequest.send(); document.getElementById("output").innerHTML = httpRequest.responseText;Teste e veja‹/›
Não recomendado para usarSíncronoRequisição, porque:
O JavaScript parará de executar até que o servidor esteja pronto para responder
Se o servidor estiver ocupado ou lento, o aplicativo ficará suspenso ou parado
Traz uma má experiência do usuário