Esto es, en esencia, lo que AJAX es para . Su página se carga y agrega un evento a un elemento. Cuando el usuario hace que se active el evento, digamos al hacer clic en algo, su Javascript usa el objeto XMLHttpRequest para enviar una solicitud a un servidor.
Después de que el servidor responde (presumiblemente con salida), otra función / evento de Javascript le da un lugar para trabajar con esa salida, incluyendo simplemente pegarla en la página como cualquier otra pieza de HTML.
Puede hacerlo "a mano" con JavaScript simple, o puede usar jQuery. Dependiendo del tamaño de su proyecto y situación particular, puede ser más sencillo usar simplemente Javascript.
JavaScript simple
En este ejemplo muy básico, enviamos una solicitud myAjax.phpcuando el usuario hace clic en un enlace. El servidor generará contenido, en este caso "¡hola mundo!". Pondremos en el elemento HTML con el id output.
El javascript
function getOutput() {
getRequest(
'myAjax.php',
drawOutput,
drawError
);
return false;
}
function drawError() {
var container = document.getElementById('output');
container.innerHTML = 'Bummer: there was an error!';
}
function drawOutput(responseText) {
var container = document.getElementById('output');
container.innerHTML = responseText;
}
function getRequest(url, success, error) {
var req = false;
try{
req = new XMLHttpRequest();
} catch (e){
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return false;
}
}
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function(){
if(req.readyState == 4) {
return req.status === 200 ?
success(req.responseText) : error(req.status);
}
}
req.open("GET", url, true);
req.send(null);
return req;
}
El HTML
<a href="#" onclick="return getOutput();"> test </a>
<div id="output">waiting for action</div>
El PHP
<?php
echo 'hello world!';
?>
Pruébelo: http://jsfiddle.net/GRMule/m8CTk/
Con una biblioteca de JavaScript (jQuery et al)
Podría decirse que es mucho código Javascript. Puede acortarlo ajustando los bloques o usando operadores lógicos más concisos, por supuesto, pero todavía están sucediendo muchas cosas allí. Si planeas hacer mucho de este tipo de cosas en tu proyecto, es mejor que tengas una biblioteca javascript.
Usando el mismo HTML y PHP de arriba, este es su script completo (con jQuery incluido en la página). He ajustado un poco el código para que sea más coherente con el estilo general de jQuery, pero entiendes la idea:
function getOutput() {
$.ajax({
url:'myAjax.php',
complete: function (response) {
$('#output').html(response.responseText);
},
error: function () {
$('#output').html('Bummer: there was an error!');
}
});
return false;
}
Pruébelo: http://jsfiddle.net/GRMule/WQXXT/
No se apresure a buscar jQuery todavía: agregar cualquier biblioteca es agregar cientos o miles de líneas de código a su proyecto con la misma seguridad que si las hubiera escrito. Dentro del archivo de la biblioteca jQuery, encontrará un código similar al del primer ejemplo, además de mucho más . Eso puede ser algo bueno, puede que no. Planifique y considere el tamaño actual de su proyecto y la posibilidad futura de expansión y el entorno o plataforma de destino.
Si esto es todo lo que necesita hacer, escriba el javascript simple una vez y listo.
Documentación