Buenas he estado peleando modificando este codigo y logre hacer que me funcionara pero tiene unos detalles que no he logrado solucionar:
1- El campo donde recibo mi dato es una lista y quiero cambiarlo a que sea un campo de texto simple ya que solo recibo un dato.
2- No me resulta enviar mas de 1 dato, por ej: envio el ID via ajax, para devolver la descripcion del articulo, pero si trato de enviar ademas su precio no me carga el dato en otro campo.
salida.html
Código:
<span id="espera"></span>
<select name="desc_art" class="style3" id="desc_art"></select>
consulta.php
Código:
<?php
$codigo_art=$_REQUEST['cod'];
$link = mysql_connect('localhost','root');
$db_selected = mysql_select_db('SCI', $link);
$consulta = "SELECT DESC_ART, VALOR_ART FROM articulo WHERE CODIGO_ART = '$codigo_art'";
$resultado = mysql_query($consulta,$link);
$datos = mysql_fetch_array($resultado);
$materias[]=$datos["DESC_ART"];
$materias2[]=$datos["VALOR_ART"];
mysql_close($link);
$xml="<?xml version=\"1.0\"?>\n";
$xml.="<materias>\n";
for($f=0;$f<count($materias);$f++)
{
$xml.="<materia>".$materias[$f]."</materia>\n";
}
$xml.="</materias>\n";
echo $xml;
header('Content-Type: text/xml');
?>
funciones.js
Código:
addEvent(window,'load',inicializarEventos,false);
function inicializarEventos()
{
var select1=document.getElementById('codigo_art');
addEvent(select1,'change',mostrarMaterias,false);
}
var conexion1;
function mostrarMaterias(e)
{
var codigo=document.getElementById('codigo_art').value;
if (codigo!=0)
{
conexion1=crearXMLHttpRequest();
conexion1.onreadystatechange = procesarEventos;
conexion1.open('GET','consulta.php?cod='+codigo, true);
conexion1.send(null);
}
else
{
var select2=document.getElementById('desc_art');
select2.options.length=0;
}
}
function procesarEventos()
{
if(conexion1.readyState == 4)
{
var d=document.getElementById('espera');
d.innerHTML = '';
var xml = conexion1.responseXML;
var pals=xml.getElementsByTagName('materia');
var select2=document.getElementById('desc_art');
select2.options.length=0;
for(f=0;f<pals.length;f++)
{
var op=document.createElement('option');
var texto=document.createTextNode(pals[f].firstChild.nodeValue);
op.appendChild(texto);
select2.appendChild(op);
}
//
//
}
else
{
var d=document.getElementById('espera');
d.innerHTML = '<img src="../cargando.gif">';
}
}
//***************************************
//Funciones comunes a todos los problemas
//***************************************
function addEvent(elemento,nomevento,funcion,captura)
{
if (elemento.attachEvent)
{
elemento.attachEvent('on'+nomevento,funcion);
return true;
}
else
if (elemento.addEventListener)
{
elemento.addEventListener(nomevento,funcion,captura);
return true;
}
else
return false;
}
function crearXMLHttpRequest()
{
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}