Una de las maneras para rellenar un formulario dinámicamente en base a una petición AJAX es por medio de JSON.
Supongamos el siguiente escenario. Tenemos un formulario que se tiene que autorellenar en base a una petición AJAX, por ejemplo, le pasamos el código de una persona y nos tiene que mostrar los datos.
// Fichero datos.php
$datos = array(
1 => array('nombre' => 'Yo', 'apellidos' => 'mismo'),
2 => array('nombre' => 'Tu', 'apellidos' => 'aquel'),
);
$codigo = filter_input(INPUT_POST, 'codigo', FILTER_SANITIZE_NUMBER_INT);
foreach ($datos as &$dato) {
$dato = utf8_encode($dato);
}
echo json_encode($datos[$codigo]);
<!-- Fichero formulario.html -->
<form id='formulario'>
<input type='text' id='codigo'>
<button type='button' id='buscar'>Buscar Registro</button>
<input type='text' id='nombre'>
<input type='text' id='apellidos'>
</form>
<script>
$('#buscar').click(function(){
$.post('datos.php', {codigo:$('#codigo').val()}, function(data){
data = JSON.parse(data);
$('#nombre').val(data.nombre);
$('#apellidos').val(data.apellidos);
});
return false;
});
</script>
En este ejemplo los datos están almacenados dentro de un array, lo normal es que fueran resultado de una consulta SQL.
En el formulario pongo, por ejemplo, el 1 para obtener los datos, estos se mandan vía post al fichero de datos, antes de devolverlos los codifico con utf8_encode para que no de ningún error, luego les damos formato con json_encode, y una vez que lo recibimos los tenemos que tratar con JSON.parse para poder acceder a ellos como si fueran un objeto.