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

No me retorna el valor si no uso alert

Estas en el tema de No me retorna el valor si no uso alert en el foro de Frameworks JS en Foros del Web. Hola a todos. Esta es mi primera consulta en este foro (aun que he resuelto muchas de mis dudas en el mirando temas). Hoy me ...
  #1 (permalink)  
Antiguo 06/01/2011, 19:33
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta No me retorna el valor si no uso alert

Hola a todos.

Esta es mi primera consulta en este foro (aun que he resuelto muchas de mis dudas en el mirando temas).

Hoy me está pasando algo muy raro.

Estoy haciendo un scripts para una página de animes online (para probar ajax y tal), lo que hace mi script es borrar comentarios de los usuarios.

El script iva bién, luego lo cambié por un código un poco mejor y me permitía más cosas.

Mi problema es que al hacer el return, según como lo haga no me devuelve nada, pero si justo antes de enviarlo, pongo un alert (con cualquier texto), lo envia O_O


Los códigos són estos:

El que envía la petición (el php va bién, y para comprovar que ha completado, hago un echo con "success", el archivo php lo carga en el otro código)
Código:
function eliminarComent(id){
	var answer = confirm ("Vas a borrar el comentario, ¿estás seguro?");
	if (answer){ //SI ACEPTA BORRARLO
	capa="info";
		var resul = getDataServer("","?comentborrar="+id,capa,"GET","mostrar");
		alert (resul);
		if (resul=="success"){
			document.getElementById(capa).innerHTML="El comentario se ha borrado exitosamente";
			totnewcom=document.getElementById("totcoments").innerHTML-1;
			document.getElementById("totcoments").innerHTML=totnewcom;
			document.getElementById("comdiv_"+id).style.visibility = "hidden";
			totalheight=document.getElementById("comdiv_"+id).style.height = 0;
		}
	}
}


EL QUE CREA EL OBJETO PARA AJAX:
Código:
function creaAjax(){
  var objetoAjax=false;
  try {
   /*Para navegadores distintos a internet explorer*/
   objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   try {
     /*Para explorer*/
     objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
     } 
     catch (E) {
     objetoAjax = false;
   }
  }

  if (!objetoAjax && typeof XMLHttpRequest!='undefined') {
   objetoAjax = new XMLHttpRequest();
  }
  return objetoAjax;
}

El que recive las variables
Código:
function getDataServer (url,valores,capa,metodo,accion)
{
	if (url==""){ //SI NO SE ASIGNA URL, SE USARÁ LA DE DEFECTO
		url = "funciones/scripts/funcionesajax.php";
	} //SI NO SE ASIGNA URL, SE USARÁ LA DE DEFECTO
	
	if (metodo==""){ metodo="POST"; }
	var ajax=creaAjax();
	var capaContenedora = document.getElementById(capa);

	miestado=1;

	ajax.open (metodo, url + valores, true); //Se inicia el envio de info	
	
	
	ajax.onreadystatechange = function() {
		
		if (ajax.readyState==1) {
			document.getElementById(capa).innerHTML="Cargando...";
			
		}
		else if (ajax.readyState==4){
			if(ajax.status==200){
/*				//Esto era un intento para que funcionara mi "experimento"

				if (miestado==1 && ajax.responseText!=""){
					var resulta=ajax.responseText;
					miestado=0;
				}

				//Y este era porque solo quiero que imprima algunos scripts en las capas (dado que no siempre quiero que se imprima)
				if (accion=="mostrar"){  
					document.getElementById(capa).innerHTML=ajax.responseText;
				}	
*/
			}			
			else if(ajax.status==404){
				capaContenedora.innerHTML = "La direccion no existe :S\nPor favor, contacte con algún administrador.)";
			}
			else{
				capaContenedora.innerHTML = "Error: "+ajax.status+"\nPor favor, contacte con algún administrador.)";
			}
		}
	 }

	
	ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	ajax.send(valores);


	alert ("CON ESTO SI QUE FUNCIONA");

	return ajax.responseText;  //<-- esto es lo que no envia bién
}


Como pueden comprovar, mi error lo tengo justo en el último código, en la última línea antes de "}".

Gracias de antemano ^^

EDIT:
He estado provando, y el problema es que cuando hace return, si no haces el alert, puede pasar esto:
Si no haces el alert O Si haces un alert con el contenido del return antes de hacer el otro alert: VA MAL (no vuelve a la otra función).

Última edición por RikuAnsem; 06/01/2011 a las 20:34
  #2 (permalink)  
Antiguo 07/01/2011, 07:29
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 15 años
Puntos: 7
Respuesta: No me retorna el valor si no uso alert

Si probas de esta manera

declaras al inicio de tu funcion la variable respuesta

if(ajax.status==200){
respuesta = ajax. responseText;
}

y ya al final haces
return respuesta;


Saludos
  #3 (permalink)  
Antiguo 07/01/2011, 16:26
 
Fecha de Ingreso: julio-2010
Mensajes: 4
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: No me retorna el valor si no uso alert

Algo parecido intenté.

Gracias por la ayuda.
Luego lo pruebo y te digo algo ;)


EDIT:
Nada, sigue igual que antes.

Lo que veo es que o:
1- necesita hacer un alert para preparar la variable (cosa ilogica)
2- necesita tiempo para preparar la variable (igual que el 1)


EDIT 2: FUNCIONA!
Bueno, tenía que cambiar el true por false del ajax.open


EDIT 4: Vuelto a arreglar!
Solución: Aparte, hay que borrar lo de ajax.onreadystatechange = function(){ } PERO DEJAR SU CONTENIDO

Gracias por todo ^^

Última edición por RikuAnsem; 08/01/2011 a las 10:55 Razón: Vuelto a arreglar!

Etiquetas: ajax, alerta
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 06:44.