Como fazer uma chamada AJAX usando JavaScript, sem usar o jQuery?
javascript
ajax
discky
fonte
fonte
Respostas:
Com o JavaScript "vanilla":
Com jQuery:
fonte
Usando o seguinte snippet, você pode fazer coisas semelhantes com bastante facilidade, assim:
Aqui está o trecho:
fonte
return x.responseText;
- e retornei cada uma dasajax.send
chamadas.ajax.get('/test.php', {foo: 'bar'}, function(responseText) { alert(responseText); });
query.join('&').replace(/%20/g, '+')
?Sei que essa é uma pergunta bastante antiga, mas agora existe uma API mais agradável disponível nativamente nos navegadores mais recentes . O
fetch()
método permite que você faça solicitações da web. Por exemplo, para solicitar algum json de/get-data
:Veja aqui para mais detalhes.
fonte
<script src="https://cdn.rawgit.com/github/fetch/master/fetch.js"></script>
e usar buscar como um campeão.Você pode usar a seguinte função:
Você pode tentar soluções semelhantes on-line nesses links:
fonte
GET
, você pode adicioná-los à solicitação, mas, para ser mais geral, estou com você, realmente pensei em atualizar a resposta para aceitar parâmetros de solicitação como um parâmetro para a função aqui , & também para passar o método (GET
ouPOST
), mas o que me impediu é que eu quero manter a resposta aqui o mais simples possível para que as pessoas o testem o mais rápido possível. Na verdade, eu odiava algumas outras respostas por ser toooo muito tempo porque eles estão tentando ser perfeito :)Que tal esta versão simples do ES6 / ES2015 ?
A função retorna uma promessa . Aqui está um exemplo de como usar a função e lidar com a promessa que ela retorna:
Se você precisar carregar um arquivo json, poderá usar
JSON.parse()
para converter os dados carregados em um Objeto JS.Você também pode integrar
req.responseType='json'
-se à função, mas infelizmente não há suporte para o IE , então eu continuariaJSON.parse()
.fonte
XMLHttpRequest
você, faça uma tentativa assíncrona de carregar um arquivo. Isso significa que a execução do código continuará enquanto o arquivo for carregado em segundo plano. Para usar o conteúdo do arquivo em seu script, você precisa de um mecanismo que informe ao script quando o arquivo terminou de carregar ou falhou. É aí que as promessas são úteis. Existem outras maneiras de resolver esse problema, mas acho que promessas são mais convenientes.fonte
Usar XMLHttpRequest .
Solicitação GET simples
Pedido POST simples
Podemos especificar que a solicitação deve ser assíncrona (true), a padrão ou síncrona (false) com um terceiro argumento opcional.
Podemos definir cabeçalhos antes de chamar
httpRequest.send()
Podemos lidar com a resposta definindo
httpRequest.onreadystatechange
uma função antes de chamarhttpRequest.send()
fonte
Você pode obter o objeto correto de acordo com o navegador com
Com o objeto correto, um GET pode ser abstraído para:
E um POST para:
fonte
Eu estava procurando uma maneira de incluir promessas no ajax e excluir o jQuery. Há um artigo no HTML5 Rocks que fala sobre as promessas do ES6. (Você pode preencher com uma biblioteca de promessas como Q ). Você pode usar o snippet de código que copiei do artigo.
Nota: Eu também escrevi um artigo sobre isso .
fonte
Uma pequena combinação de alguns dos exemplos abaixo e criou esta peça simples:
OU se seus parâmetros forem objeto (s) - pequeno ajuste adicional de código:
Ambos devem ser totalmente compatíveis com o navegador + versão.
fonte
Se você não deseja incluir o JQuery, eu experimentaria algumas bibliotecas AJAX leves.
O meu favorito é reqwest. É apenas 3,4kb e muito bem construído: https://github.com/ded/Reqwest
Aqui está um exemplo de solicitação GET com reqwest:
Agora, se você quiser algo ainda mais leve, eu tentaria o microAjax a apenas 0,4kb: https://code.google.com/p/microajax/
Este é todo o código aqui:
E aqui está um exemplo de chamada:
fonte
Velho, mas vou tentar, talvez alguém ache esta informação útil.
Essa é a quantidade mínima de código que você precisa para fazer uma
GET
solicitação e buscar algunsJSON
dados formatados. Isso é aplicável apenas a navegadores modernos, como as versões mais recentes do Chrome , FF , Safari , Opera e Microsoft Edge .Verifique também a nova API de busca, que é uma substituição baseada em promessa da API XMLHttpRequest .
fonte
XMLHttpRequest ()
Você pode usar o
XMLHttpRequest()
construtor para criar um novoXMLHttpRequest
objeto (XHR) que permitirá que você interaja com um servidor usando métodos padrão de solicitação HTTP (comoGET
ePOST
):buscar()
Você também pode usar o
fetch()
método para obter umPromise
que resolve para oResponse
objeto que representa a resposta à sua solicitação:navigator.sendBeacon ()
Por outro lado, se você está simplesmente tentando
POST
dados e não precisa de uma resposta do servidor, a solução mais curta seria usarnavigator.sendBeacon()
:fonte
De youMightNotNeedJquery.com +
JSON.stringify
fonte
Isso pode ajudar:
fonte
fonte
Espero que ajude
Step 1.
Armazene a referência no objeto XMLHttpRequestStep 2.
Recuperar o objeto XMLHttpRequestStep 3.
Faça uma solicitação HTTP assíncrona usando o objeto XMLHttpRequestStep 4.
Executado automaticamente quando uma mensagem é recebida do servidorfonte
em JavaScript simples no navegador:
Ou se você deseja usar o Browserify para agrupar seus módulos usando o node.js. Você pode usar o superagent :
fonte
Aqui está um JSFiffle sem JQuery
http://jsfiddle.net/rimian/jurwre07/
fonte
minha chamada ajax
para abortar pedidos anteriores
fonte
HTML:
PHP:
fonte
Uma solução muito boa com javascript puro está aqui
fonte