Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Puedo hacer esto?

Estas en el tema de Puedo hacer esto? en el foro de Frameworks JS en Foros del Web. Quiero ver si un registro existe en la base de datos (para verificar), Código: function existe(){ http.open('GET', url+'existeDepartamento&id='+campo.value, true); http.onreadystatechange=function() { if(http.readyState==4) { resultado=http.responseText; } ...
  #1 (permalink)  
Antiguo 09/03/2006, 06:48
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Puedo hacer esto?

Quiero ver si un registro existe en la base de datos (para verificar),


Código:
function existe(){
http.open('GET', url+'existeDepartamento&id='+campo.value, true);
http.onreadystatechange=function() 
{	if(http.readyState==4)
	{	resultado=http.responseText;
	}
}
http.send(null);		
alert(resultado);
}
Mi idea es recibir el resultado que me da el php al que llamo y dependiendo de si es 1 o 0 que la funcion existe() devuelva true o false.
El problema que veo que tengo que no puedo sacar la variable "resultado" de la funcion que la contiene (al menos no se hacerlo).
COmo deberia abordar el tema?



Por otra parte esto otro me funciona en mozilla, pero en explorer no y es raro xq probando veo que el tema podria estar en el archivo php donde saco los datos... y esto no depende del navegador sino del servidor...
Aqui el trozo javascript:
Código HTML:
http.open('GET', url+'getDepartamentos', true);
http.onreadystatechange = getDepartamentoHttp;
http.send(null);

function getDepartamentoHttp()
{	if (http.readyState == 4) 
	{  var xmlDocument = http.responseXML;
  	    alert(xmlDocument.getElementsByTagName('lista').length);
	}
}
En mozilla me devuelve 1 (porque 'lista' es el elemento raiz del documento xml que obtengo).
En explorer me devuelve 0...

La parte del servidor es esta otra (dentro de un switch):
Código PHP:
case 'getDepartamentos':    
                $departamentos=$model->getDepartamentos();
                $numDeps=count($departamentos);
                $xml="<?xml version="1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?>
                <lista>"
;
                for(
$i=0;$i<$numDeps;$i++)
                {    
$xml.="<departamento>";
                    
$xml.="<id>".$departamentos[$i]['departamento_id']."</id>";
                    
$xml.="<nombre>".$departamentos[$i]['departamento_nombre']."</nombre>";
                    
$xml.="</departamento>";
                }
                
$xml.="</lista>";
                
header('Content-Type: text/xml'); 
                echo 
$xml;
                die();        
                break;
$model->getDepartamentos() es un metodo de un objeto que me devuelve registros de una base de datos.

EL caso esque no obtengo estos registros desde Internet Explorer y es curioso la verdad...

Última edición por clinisbut; 09/03/2006 a las 07:47
  #2 (permalink)  
Antiguo 04/05/2006, 01:28
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Nadie sabe nada?
  #3 (permalink)  
Antiguo 04/05/2006, 05:01
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 10 meses
Puntos: 7
E problema lo tienes en la implementacion del objeto xmlDocument del lado de la página cliente. Se crea de forma diferente dependiendo de si es IE o Netscape.

Código:
var xmlDocument;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlDocument = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlDocument = new XMLHttpRequest();
}
}


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #4 (permalink)  
Antiguo 02/10/2006, 02:03
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 11 meses
Puntos: 0
Ok, gracias!
Y con la primera pregunta?
Cita:
Quiero ver si un registro existe en la base de datos (para verificar),


Código:

function existe(){ http.open('GET', url+'existeDepartamento&id='+campo.value, true); http.onreadystatechange=function() { if(http.readyState==4) { resultado=http.responseText; } } http.send(null); alert(resultado); }


Mi idea es recibir el resultado que me da el php al que llamo y dependiendo de si es 1 o 0 que la funcion existe() devuelva true o false.
El problema que veo que tengo que no puedo sacar la variable "resultado" de la funcion que la contiene (al menos no se hacerlo).
COmo deberia abordar el tema?
  #5 (permalink)  
Antiguo 02/10/2006, 14:44
Avatar de ikhuerta  
Fecha de Ingreso: octubre-2006
Mensajes: 104
Antigüedad: 18 años, 1 mes
Puntos: 0
Lo más comodo es que tras el onreadystate llames a otra función que se ejecutará solo cuando eso pase... esa otra función si que podrás controlarla...

Código:
XHR.onreadystatechange=function() { 	if (XHR.readyState==4) {
		if (XHR.status==200) {	
eval("proceso_ajax('"+XHR.responseText+"');");
						 }
  XHR.send(null); }

[...]
function proceso_ajax(respuesta)
{
 if (respuesta=='0') ejecuta_esto();
 else  if (respuesta=='1') ejecuta_esto_otro();

}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:55.