Pues no es nada del otro mundo...
*primero, en tu formulario debes tenr tu combo cuyos resultados salen de un query... eso ya lo tienes
Código PHP:
<select name='micombo' id='micombo' onChange="enviaMotivo()">
<option value='0'>Seleccione...</option>
<?php
while($fila=mysql_fetch_row($q_motivo)){
echo "<option value='".$fila[0]."'>".$fila[1]."</option>";
}
?>
</select>
*(aqui viene lo de ajax en 2 partes) Lo que debes hacer primero en ajax es recoger el value del combo:
Código:
function enviaMotivo(){
var c = document.getElementById('motivo_mensaje')
var motivo = document.frmform.micombo.value;
ajax=creaAjax();
c.innerHTML = '<img src="images/sending.gif" width="16" height="16" align="absmiddle">';
ajax.open("POST", "recibe.php",true);
ajax.onreadystatechange=function(){
if (ajax.readyState==4 && ajax.status == 200 ) {
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("motivo="+motivo+"&control=enviado");
}
*Tercero ... el value del combo (que en este caso es un ID) viaja hasta un script php que lo recibe. En este caso proceso ese ID y saco los datos y como debes saber , envias una respuesta a la resiente funcion ajax, esta respuesta es el conjunto de datos concatenados..:
Código PHP:
echo $dato1."::~::".$dato2."::~::".$dato3."::~::".$dato4;
*Por ultimo , vas a agregar a tu funcion ajax lo que habias echo, pero la unica diferencia que he notado en tu script es que debes especificar los inputs que estan en tu formulario... osea
document.form.input.value , al final tu funcion debe quedar asi:
Código:
function enviaMotivo(){
var c = document.getElementById('motivo_mensaje')
var motivo = document.frmform.micombo.value;
ajax=creaAjax();
c.innerHTML = '<img src="images/sending.gif" width="16" height="16" align="absmiddle">';
ajax.open("POST", "recibe.php",true);
ajax.onreadystatechange=function(){
if (ajax.readyState==4 && ajax.status == 200 ) {
var respuesta=ajax.responseText;
var registro = respuesta.split('::~::');
document.frmform.txtdato1.value=registro[0];
document.frmform.txtdato2.value=registro[1];
document.frmform.txtdato3.value=registro[2];
document.frmform.txtdato4.value=registro[3];
c.innerHTML = '';
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("motivo="+motivo+"&control=enviado");
}
y eso es todo.... no necesitas mandar una tremenda funcion