Foros del Web » Programando para Internet » Javascript »

comprobacion resultado consulta en Ajax

Estas en el tema de comprobacion resultado consulta en Ajax en el foro de Javascript en Foros del Web. Hola, en una consulta php imprimo el valor del numero de filas que me devuelve una query para poder hacer un alert. si tiene valores ...
  #1 (permalink)  
Antiguo 24/09/2012, 08:04
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
comprobacion resultado consulta en Ajax

Hola,
en una consulta php imprimo el valor del numero de filas que me devuelve una query para poder hacer un alert. si tiene valores escribo un json en un fichero y si no muestro el alert.
Código PHP:
$rows pg_num_rows($result);
echo 
$rows ." fila(s) devuelta(s).\n";
if (
$rows != 0){
 
/* imprimo el json */
}else{
print 
$rows;

Ahora en un script ajax envio un formulario y le digo que me ejecute la consulta.php,
Código:
var xmlhttp; 
function xhr(formulario){ 
		if (window.XMLHttpRequest)
  			{
  				xmlhttp=new XMLHttpRequest();
	  		}
		else
	  		{
  				xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  		}
		xmlhttp.onreadystatechange = procesarRespuesta; 
		xmlhttp.open("POST", "consulta.php", true); 
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", 3);
		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.send(formulario);
}
entonces ahora quiero que si se cumple la condicion la aplicacion actualice un grid o si no que imprima un alert. entonces aqui es donde recojo el valor de $rows de consulta php ¿no?. Pense en hacerlo de este modo pero no me abre el mensajito de alert.
Código:
function procesarRespuesta(){
		if(xmlhttp.readyState == 4) {
      		if(xmlhttp.status == 200) {
				store.load();
			} else if(xmlhttp.responseText > 0){
					alert("no es lo que quiero");
			}
    }
}
esta funcion esta bien o esta mal? en principo no me falla la pagina, pero como digo no me hace el alert. si abro el firebug me muestra 0 fila(s) devuelta(s).
0. la parte de 0 fila(s) devuelta(s). es el echo $rows que hago en el php y el 0 es el print $rows; si no estoy equivocado, en la funcion procesarRespuesta le tengo que decir que me recoja ese valor del print y si se cumple la condicion que abra el alert ¿no?...
  #2 (permalink)  
Antiguo 24/09/2012, 08:16
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: comprobacion resultado consulta en Ajax

Hola:

A simple vista estás comparando una cadena de texto con un número... tal vez quieras comparar el "length" de la cadena... (la pregunta no termino de entenderla)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 24/09/2012, 12:54
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: comprobacion resultado consulta en Ajax

hola,
ummmm, efectivamente la respuesta q obtengo de la consulta con el print rows es un número, entonces xmlhttp.responseText es para cadenas? pensaba que podia hacerlo de este modo. que puedo usar entonces?, y si en lugar de usar pg_num_rows($loquesea); uso pg_num_fields($loquesea); leches! esto tampoco pq finalmente tambien devuelve un número, no?...
cómo puedo entonces imprimir ese alert?
gracias.
  #4 (permalink)  
Antiguo 24/09/2012, 14:06
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: comprobacion resultado consulta en Ajax

Cita:
Iniciado por emeotero Ver Mensaje
hola,
ummmm, efectivamente la respuesta q obtengo de la consulta con el print rows es un número, entonces xmlhttp.responseText es para cadenas? pensaba que podia hacerlo de este modo. que puedo usar entonces?, y si en lugar de usar pg_num_rows($loquesea); uso pg_num_fields($loquesea); leches! esto tampoco pq finalmente tambien devuelve un número, no?...
cómo puedo entonces imprimir ese alert?
gracias.
En tanto esto sea una comparación numérica

xmlhttp.responseText > 0

necesitas hacer de la primera parte de tu expresión un valor numérico. lo que conseguirías con length. miralo asi
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. //<![CDATA[
  3. var texto = "0 filas devueltas";
  4.  
  5. if(texto > 0){
  6. alert('mayor');
  7. }else{
  8. alert('menor ó igual');
  9. }
  10.  
  11. if(texto.length > 0){
  12. alert('mayor');
  13. }else{
  14. alert('menor ó igual');
  15. }
  16. //]]>
  17. </script>

Pero eso no se si sirva de mucho a tu propósito
Que valores posibles debe entregar tu php?
Código PHP:
Ver original
  1. $rows = pg_num_rows($result);
  2. echo $rows ." fila(s) devuelta(s).\n"; // que objeto tiene esto?
  3. if ($rows !== 0){
  4.  /* imprimo el json */
  5. }else{
  6. print $rows; // aqui imprime 0
  7. }

luego

if(xmlhttp.responseText == '0'){
alert("no hay registros");
}


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 24/09/2012, 14:15
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: comprobacion resultado consulta en Ajax

una de las muchas soluciones es quitar el else php. puesto que enviará 0. y en el javascript

Cita:
} else if(xmlhttp.responseText != ''){
responseText no es para cadenas ni dígitos, si no para cualquier carácter alfanumerico. de ahí que otra solución es la que expone caricatos
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #6 (permalink)  
Antiguo 24/09/2012, 14:33
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: comprobacion resultado consulta en Ajax

hola,
lo de echo
Código:
$rows ." fila(s) devuelta(s).\n";
es unicamente con el proposito de que efectivamente si no encontraba valores al ejecutar la query me imprimia el numero de rows que salian, no tiene mayor sentido.
emprear, el php escribe un fichero Json que después le paso a un grid de Extjs y muestro la info en él. De ahí que quisiera hacer la comprobación de si realmente devolvía algo. Efectivamente devuelve algo si la consulta es válida, pero claro si no lo es, ho hace nada, evidentemente.
IsaBelM, si quito el else del PHP no esta imprimiendo un valor en el mismo, esto es que queda vacio, realmente no hace falta entonces escribir un valor como tal? quiero decir que le pasa el valor vacio.
  #7 (permalink)  
Antiguo 25/09/2012, 08:00
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: comprobacion resultado consulta en Ajax

- resuelto-
finalmente hago en el fichero de la consulta php
Código:
}else{
print ($rows);
}
y lo recogo en el script
Código:
function procesarRespuesta(){
		if(xmlhttp.readyState == 4) {
      		if(xmlhttp.status == 200) {
				if(xmlhttp.responseText != ''){
					alert("<?php echo $lang['text_171']; ?>");
					store.load();
				} else {
				store.load();
			}
		}
    }
}
y el caso es que funciona.

Etiquetas: ajax, comprobacion, formulario, funcion, js, php, resultados
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 02:25.