¿Cómo hacer una llamada AJAX usando JavaScript, sin usar jQuery?
javascript
ajax
discky
fuente
fuente
Respuestas:
Con JavaScript "vainilla":
Con jQuery:
fuente
Usando el siguiente fragmento puedes hacer cosas similares con bastante facilidad, como esta:
Aquí está el fragmento:
fuente
return x.responseText;
, y luego devolví cada una de lasajax.send
llamadas.ajax.get('/test.php', {foo: 'bar'}, function(responseText) { alert(responseText); });
query.join('&').replace(/%20/g, '+')
en su lugar?Sé que esta es una pregunta bastante antigua, pero ahora hay una API más agradable disponible de forma nativa en los navegadores más nuevos . El
fetch()
método le permite realizar solicitudes web. Por ejemplo, para solicitar algunos json de/get-data
:Ver aquí para más detalles.
fuente
<script src="https://cdn.rawgit.com/github/fetch/master/fetch.js"></script>
y usa fetch como un campeón.Puede usar la siguiente función:
Puede probar soluciones similares en línea en estos enlaces:
fuente
GET
, por lo que puede agregarlos a la solicitud, pero para ser más general, estoy con usted, realmente pensé en actualizar la respuesta para aceptar los parámetros de solicitud como un parámetro para la función aquí , y también para pasar el método (GET
oPOST
), pero lo que me detuvo es que quiero mantener la respuesta aquí lo más simple posible para que la gente lo intente lo más rápido posible. En realidad, odiaba algunas otras respuestas por ser demasiado largas porque intentaban ser perfectas :)¿Qué tal esta versión en ES6 / ES2015 simple ?
La función devuelve una promesa . Aquí hay un ejemplo sobre cómo usar la función y manejar la promesa que devuelve:
Si necesita cargar un archivo json, puede usarlo
JSON.parse()
para convertir los datos cargados en un objeto JS.También puede integrarse
req.responseType='json'
en la función, pero desafortunadamente no hay soporte para IE , por lo que me quedaría conJSON.parse()
.fuente
XMLHttpRequest
usarlo, realiza un intento asincrónico de cargar un archivo. Eso significa que la ejecución de su código continuará, mientras su archivo se carga en segundo plano. Para usar el contenido del archivo en su script, necesita un mecanismo que le diga a su script cuando el archivo terminó de cargarse o no pudo cargarse. Ahí es donde las promesas son útiles. Hay otras formas de resolver este problema, pero creo que las promesas son más convenientes.fuente
Utilice XMLHttpRequest .
Solicitud GET simple
Solicitud POST simple
Podemos especificar que la solicitud debe ser asíncrona (verdadera), la predeterminada o síncrona (falsa) con un tercer argumento opcional.
Podemos configurar encabezados antes de llamar
httpRequest.send()
Podemos manejar la respuesta configurando
httpRequest.onreadystatechange
una función antes de llamarhttpRequest.send()
fuente
Puede obtener el objeto correcto de acuerdo con el navegador con
Con el objeto correcto, se puede abstraer un GET para:
Y un mensaje para:
fuente
Estaba buscando una manera de incluir promesas con ajax y excluir jQuery. Hay un artículo sobre HTML5 Rocks que habla sobre las promesas de ES6. (Podría rellenar con una biblioteca prometedora como Q ) Puede usar el fragmento de código que copié del artículo.
Nota: También escribí un artículo sobre esto .
fuente
Una pequeña combinación de un par de ejemplos a continuación y creó esta pieza simple:
O si sus parámetros son objeto (s) - ajuste de código adicional menor:
Ambos deben ser totalmente compatibles con el navegador y la versión.
fuente
Si no desea incluir JQuery, probaría algunas bibliotecas AJAX ligeras.
Mi favorito es reqwest. Tiene solo 3.4kb y está muy bien desarrollado: https://github.com/ded/Reqwest
Aquí hay una solicitud GET de muestra con reqwest:
Ahora, si quieres algo aún más liviano, probaría microAjax a solo 0.4kb: https://code.google.com/p/microajax/
Este es todo el código aquí:
Y aquí hay una muestra de llamada:
fuente
Viejo pero lo intentaré, tal vez alguien encuentre útil esta información.
Esta es la cantidad mínima de código que necesita para hacer una
GET
solicitud y obtener algunosJSON
datos formateados. Esto es aplicable solo a los navegadores modernos como las últimas versiones de Chrome , FF , Safari , Opera y Microsoft Edge .Consulte también la nueva API Fetch, que es un reemplazo basado en promesas para la API XMLHttpRequest .
fuente
XMLHttpRequest ()
Puede usar el
XMLHttpRequest()
constructor para crear un nuevoXMLHttpRequest
objeto (XHR) que le permitirá interactuar con un servidor utilizando métodos de solicitud HTTP estándar (comoGET
yPOST
):ir a buscar()
También puede usar el
fetch()
método para obtener unPromise
que resuelva elResponse
objeto que representa la respuesta a su solicitud:navigator.sendBeacon ()
Por otro lado, si simplemente está intentando obtener
POST
datos y no necesita una respuesta del servidor, la solución más corta sería utilizarnavigator.sendBeacon()
:fuente
De youMightNotNeedJquery.com +
JSON.stringify
fuente
Esto puede ayudar:
fuente
fuente
Espero que ayude
Step 1.
Almacene la referencia al objeto XMLHttpRequestStep 2.
Recupere el objeto XMLHttpRequestStep 3.
Realice una solicitud HTTP asincrónica utilizando el objeto XMLHttpRequestStep 4.
Se ejecuta automáticamente cuando se recibe un mensaje del servidorfuente
en JavaScript simple en el navegador:
O si desea usar Browserify para agrupar sus módulos usando node.js. Puedes usar superagente :
fuente
Aquí hay un JSFiffle sin JQuery
http://jsfiddle.net/rimian/jurwre07/
fuente
mi llamada ajax
para cancelar solicitudes anteriores
fuente
HTML:
PHP:
fuente
Una muy buena solución con javascript puro está aquí
fuente
Intente usar la API de recuperación ( API de recuperación )
Es realmente claro y 100% vainilla.
fuente