¿Que tal? tengo el siguiente codigo:
Código HTML:
function newAjax()
{
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}
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 cambiar_select(divId, tagName, selectName, selectId, funcion, parametro, Width, AddEvent)
{
url = baseurl+'php/php_selects.php?funcion='+funcion+'¶metro='+parametro+'&tagName='+tagName;
ajax = newAjax();
ajax.onreadystatechange = function()
{
var div = document.getElementById(divId);
div.innerHTML = '';
if(ajax.readyState == 4)
{
var xml = ajax.responseXML;
var opt = xml.getElementsByTagName(tagName);
var select = document.createElement('select');
select.name = selectName;
select.id = selectId;
select.style.width = Width;
var seleccione = document.createElement('option');
var texto = document.createTextNode('Seleccione');
seleccione.appendChild(texto);
seleccione.value = 'seleccione';
select.appendChild(seleccione);
div.appendChild(select);
if(estado != 'seleccione')
{
for(i=0;i<opt.length;i++)
{
var option = document.createElement('option');
var text = document.createTextNode(opt[i].firstChild.nodeValue);
option.appendChild(text);
select.appendChild(option);
}
if(AddEvent == 'add')
{
addUrl = baseurl+'php/php_selects.php?funcion='+funcion+'_addEvent¶metro=NULL&tagName=NULL';
addEv = newAjax();
addEv.onreadystatechange = function()
{
if(addEv.readyState == 4)
{
funcion = addEv.responseText;
}
}
addEv.open('GET',addUrl,true);
addEv.send(null);
addEvent(select,'change',function(){ eval(funcion); },false);
}
}
}
else
{
div.innerHTML = '<img src="'+baseurl+'images/cargando.gif" />';
}
}
ajax.open('GET',url, true);
ajax.send(null);
}
Y en el Php
Código PHP:
require("db.php");
if($_REQUEST)
{
$funcion = $_REQUEST["funcion"];
$parametro = $_REQUEST["parametro"];
$tagName = $_REQUEST["tagName"];
if(function_exists($funcion))
{
echo $funcion($parametro);
}
else
{
$xml="<?xml version="1.0\"?>\n";
$xml.="<marco>\n";
$xml.="<".$tagName.">No existen ciudades</".$tagName.">";
$xml.="</marco>";
header('Content-Type: text/xml');
echo $xml;
}
}
function sel_edo($estado)
{
global $db,$tagName;
$xml="<?xml version=\"1.0\"?>\n";
$xml.="<marco>\n";
if($ciudades = $db->get_results('select * from ciudades where estado = "'.$estado.'"'))
{
foreach($ciudades as $row)
{
$xml.= "<".$tagName.">".$row->ciudad."</".$tagName.">\n";
}
}
else
{
$xml.="<".$tagName.">No existen ciudades</".$tagName.">";
}
$xml.="</marco>\n";
header('Content-Type: text/xml');
return $xml;
}
//FIN FUNCION
//INICIO FUNCION
function sel_edo_addEvent($param = NULL)
{
echo "cambiar_codigo(document.getElementById('estado').value,document.getElementById('ciudad_').value)";
}
//FIN FUNCION
Y funciona perfectamente en Chrome pero no sirve sino hasta estas dos lineas de Javascript
:
Código HTML:
select.appendChild(seleccione);
div.appendChild(select);
Yo siempre he usado Xajax pero realmente queria dedicarme a aprender Ajax a puro codigo...
Ademas trabajo con CodeIgniter por eso pueden ver el uso de una variable no definida
Ella es definida en el template que uso de la siguiente forma
Código PHP:
<script>
baseurl = "<?=base_url();?>";
</script>
Si alguien me puede ayudar no tengo otra forma de explicarlo... De antemano gracias!