Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] No veo donde esta el error.

Estas en el tema de No veo donde esta el error. en el foro de Javascript en Foros del Web. Hola, tengo este cod pero no veo donde esta mi error y es que cuando no hay registros en el ajax.php no me sale el ...
  #1 (permalink)  
Antiguo 22/02/2013, 04:55
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
No veo donde esta el error.

Hola, tengo este cod pero no veo donde esta mi error y es que cuando no hay registros en el ajax.php no me sale el valor de la variable:

Código HTML:
Ver original
  1. html_user = '<tr><td colspan="4" align="center">No se encontraron registros..</td></tr>';

y claro ya no sigue el código. Por favor si veis algo raro me lo podeis decir?

Código Javascript:
Ver original
  1. function filtrar()
  2.  
  3. {
  4. $.ajax({
  5. data: $("#frm_filtro").serialize()+ordenar,
  6. type: "POST",
  7. dataType: "json",
  8. url: "ajax.php?action=listar",
  9. beforeSend:function(){
  10. $('.carga1').css('display','block');
  11. $('.carga1').html("<img src='imagenes_menu/ajax-loader4.gif' align='center' /><br />Cargando...");
  12.  },
  13. complete: function() {
  14. $(".carga1").show();
  15. $(".carga1").hide();
  16. },
  17. success: function(data){
  18. var html_user ='' ;
  19. if(data.length > 0){
  20. $.each(data, function(i,item){
  21.  
  22. html_user += '<tr ondblclick="pulsar(this, ' + *String.fromCharCode(39) + item.id_aviso + String.fromCharCode(39) *+ ');" >';
  23. html_user += '<td style="'+item.style+'"><input name="demo" type="radio" value="' + item.id_aviso + '"/></td>';
  24. html_user += '<td  style="'+item.style+'">'+item.id_aviso+'</td>';
  25. html_user += '<td  style="'+item.style+'">'+item.telefonos+'</td>';
  26. html_user += '<td  style="'+item.style+'">'+item.name+' '+item.apellidos+'</td>';
  27. html_user += '<td  style="'+item.style+'">'+item.calle+'</td>';
  28. html_user += '<td  style="'+item.style+'">'+item.localidad+'</td>';
  29. html_user += '</tr>';
  30.  
  31. });
  32.  }
  33. if(html_user == '')
  34.     html_user = '<tr><td colspan="4" align="center">No se encontraron registros..</td></tr>';
  35. $("#data tbody").html(html_user);
  36. $('.carga').html('');
  37.    
  38.    if(data.length=='0'){
  39.        var telefonos = document.getElementsByName('telefonos');
  40.        
  41.       if (confirm("¿Nuevo Cliente?")) {
  42.            
  43.          if (document.form12.telefonos.value=="")
  44.    {
  45.              alert("¡Ingrese nº de teléfono!");
  46.              document.form12.telefonos.focus; // posicionas el puntero en ese campo
  47.              return false;//le dices q no envie nada
  48.          }
  49.          document.forms['form12'].submit();
  50.                  
  51.       } else {
  52.      
  53.          return false;    
  54.       }
  55. }
  56.   }
  57.        
  58.   });
  59.    }

Gracias

Última edición por satjaen; 22/02/2013 a las 06:07
  #2 (permalink)  
Antiguo 22/02/2013, 07:26
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: No veo donde esta el error.

Hola:

No estoy seguro si puede ser el problema, pero cuando haces un $.each() con jquery, jquery hace que el this de esa función sea el dato, por lo que quizás no tengas acceso a la variable html_user que has declarado fuera.

Si fuese así, lo que haces dentro de la función del each se estaría haciendo sobre una variable html_user global, distinta de la local del success. Intenta ver si esa variable global existe y tiene el contenido que esperas.

Un saludo.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 22/02/2013, 09:50
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: No veo donde esta el error.

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

No estoy seguro si puede ser el problema, pero cuando haces un $.each() con jquery, jquery hace que el this de esa función sea el dato, por lo que quizás no tengas acceso a la variable html_user que has declarado fuera.

Si fuese así, lo que haces dentro de la función del each se estaría haciendo sobre una variable html_user global, distinta de la local del success. Intenta ver si esa variable global existe y tiene el contenido que esperas.

Un saludo.
Gracias, lo he intentado pero sigo sin resolverlo. Pongo el ajax.php por si el error estubiera en el.

Código PHP:
Ver original
  1. <?php  
  2. include("Connections/conexion.php");
  3. if ($_GET["action"] == "listar")
  4. {
  5.     // valores recibidos por POST
  6.     $vte = $_POST['telefonos'];
  7.     $ape = $_POST['apellidos'];
  8.     $name = $_POST['name'];
  9.     $dni = $_POST['dni'];
  10.     $calle = $_POST['calle'];
  11.     $movil = $_POST['movil'];
  12.     $loca = $_POST['localidad'];
  13.    
  14.  
  15.  
  16.    
  17. if ( ! empty($vte)) {
  18. $sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
  19.  
  20. FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.telefonos='$vte')
  21.  
  22. UNION ALL
  23.  
  24. (SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
  25.  
  26. FROM avisos WHERE telefonos='$vte' )
  27.  
  28. UNION ALL
  29.  
  30. (SELECT 2 as qnum,U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
  31.  
  32. FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.telefonos='$vte')";
  33. }
  34. if ( ! empty($movil)) {
  35. $sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
  36.  
  37. FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.movil='$movil')
  38.  
  39. UNION ALL
  40.  
  41. (SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
  42.  
  43. FROM avisos WHERE movil='$movil' )
  44.  
  45. UNION ALL
  46.  
  47. (SELECT 2 as qnum,U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
  48.  
  49. FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.movil='$movil')";
  50. }
  51. if ( ! empty($dni)) {
  52. $sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
  53.  
  54. FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.dni='$dni')
  55.  
  56. UNION ALL
  57.  
  58. (SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
  59.  
  60. FROM avisos WHERE dni='$dni' )
  61.  
  62. UNION ALL
  63.  
  64. (SELECT 2 as qnum,U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
  65.  
  66. FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.dni='$dni')";
  67. }
  68. if ( ! empty($calle)) {
  69. $sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
  70.  
  71. FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  B.calle like '%$calle%')
  72.  
  73. UNION ALL
  74.  
  75. (SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
  76.  
  77. FROM avisos WHERE calle like '%$calle%')
  78.  
  79. UNION ALL
  80.  
  81. (SELECT 2 as qnum, U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
  82.  
  83. FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  D.calle like '%$calle%')";
  84. }
  85.  
  86. if ( ! empty($ape)) {
  87. $sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
  88.  
  89. FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.apellidos like '%$ape%')
  90.  
  91. UNION ALL
  92.  
  93. (SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
  94.  
  95. FROM avisos WHERE apellidos like '%$ape%')
  96.  
  97. UNION ALL
  98.  
  99. (SELECT 2 as qnum, U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
  100.  
  101. FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.apellidos like '%$ape%')";
  102. }
  103. if ( ! empty($name)) {
  104. $sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
  105.  
  106. FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  A.name like '%$name%')
  107.  
  108. UNION ALL
  109.  
  110. (SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
  111.  
  112. FROM avisos WHERE name like '%$name%')
  113.  
  114. UNION ALL
  115.  
  116. (SELECT 2 as qnum, U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
  117.  
  118. FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  U.name like '%$name%')";
  119. }
  120. if ( ! empty($loca)) {
  121. $sql ="(SELECT 0 as qnum,A.id_aviso,A.telefonos,A.telefonos3,A.movil,A.dni,A.name,A.apellidos,B.localidad,B.calle
  122.  
  123. FROM clientes A,dir_clientes B WHERE A.id_aviso=B.id_aviso AND B.calle != '' AND  B.localidad like '%$loca%')
  124.  
  125. UNION ALL
  126.  
  127. (SELECT 1 as qnum,id_aviso,telefonos,telefonos3,movil,dni,name,apellidos,localidad,calle
  128.  
  129. FROM avisos WHERE localidad like '%$loca%')
  130.  
  131. UNION ALL
  132.  
  133. (SELECT 2 as qnum, U.id_aviso,U.telefonos,U.telefonos3,U.movil,U.dni,U.name,U.apellidos,D.localidad,D.calle
  134.  
  135. FROM usuarios U,dir_usuarios D WHERE  U.id_aviso=D.id_aviso AND D.calle != ''AND  D.localidad like '%$loca%')";
  136. }
  137.  
  138.     // Ordenar por
  139.     $vorder = $_POST['orderby'];
  140.    
  141.     if($vorder != ''){
  142.         $sql .= " ORDER BY ".$vorder;
  143.     }
  144.      
  145.     $query = mysql_query($sql);
  146. if (mysql_num_rows($query) > 0) {
  147.          
  148.   $datos = array();
  149.      
  150.     while($row = mysql_fetch_array($query))
  151.     {
  152.           if($row["qnum"]==0) $style="";
  153.           if($row["qnum"]==1)$style="background-color:yellow";
  154.           if($row["qnum"]==2)$style="background-color:orange";
  155.    
  156.    
  157.    
  158.         $datos[] = array(
  159.             'id_aviso'          => $row['id_aviso'],
  160.             'telefonos'          => $row['telefonos'],
  161.             'name'      => utf8_encode($row['name']),
  162.             'apellidos'       => utf8_encode($row['apellidos']),
  163.             'calle'       => utf8_encode($row['calle']),
  164.             'localidad'        => utf8_encode($row['localidad']),
  165.             'style'       =>  $style
  166.            
  167.            
  168.         );
  169.     }
  170.     // convertimos el array de datos a formato json
  171.     echo json_encode($datos);
  172. /* Tienes resultados. */
  173.   }
  174. }
  175. ?>

Última edición por satjaen; 22/02/2013 a las 10:07
  #4 (permalink)  
Antiguo 22/02/2013, 10:33
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: No veo donde esta el error.

Hola:

Si es lo que te comentaba, posiblemente la primera linea

html_user += ...

de error, ya que html_user no está definida.
Prueba a arrancar tu aplicación con google chrome y abre la consola de javascript, ahí verás si se producen errores y podrás depurar http://chuwiki.chuidiang.org/index.p...ipt_con_Chrome

O si quieres hacer otra prueba rápida, quita el var de delante de html_user donde lo estás declarando. Esto hará que sea global y sí se verá desde dentro de la función each()

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 22/02/2013, 11:38
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: No veo donde esta el error.

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Si es lo que te comentaba, posiblemente la primera linea

html_user += ...

de error, ya que html_user no está definida.
Prueba a arrancar tu aplicación con google chrome y abre la consola de javascript, ahí verás si se producen errores y podrás depurar http://chuwiki.chuidiang.org/index.p...ipt_con_Chrome

O si quieres hacer otra prueba rápida, quita el var de delante de html_user donde lo estás declarando. Esto hará que sea global y sí se verá desde dentro de la función each()

Se bueno.
He quitado el var y hace lo mismo que antes. En firebug lo he comprobado y no me da respuesta si te sirve de algo.
  #6 (permalink)  
Antiguo 23/02/2013, 06:01
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: No veo donde esta el error.

Puede ser que no este haciendo bien la condicion de la variable html_user para cuando no se encuentran registros, porque si aquí if(data.length > 0){ estoy diciendo que si hay datos me lo imprima despues tendría que hacer el else no? . O tendría que hacerlo en el php if (mysql_num_rows($query) > 0) { ?

Última edición por satjaen; 23/02/2013 a las 06:12
  #7 (permalink)  
Antiguo 24/02/2013, 05:46
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: No veo donde esta el error.

Ok ya funciona. Agradecer sobre todo a @chuidiang que es el unico que me ha ayudado y enseñado algo mas. Comparto esto para los usuarios que como yo estamos aprendiendo y gracias a algunos colaboradores lo hacen posible.

Solución:

Código PHP:
 if (mysql_num_rows($query) > 0) { 
         
  
$datos = array(); 
     
    while(
$row mysql_fetch_array($query)) 
    { 
          if(
$row["qnum"]==0$style="";
          if(
$row["qnum"]==1)$style="background-color:yellow";
          if(
$row["qnum"]==2)$style="background-color:orange";
    
    
    
        
$datos[] = array( 
            
'id_aviso'          => $row['id_aviso'], 
            
'telefonos'          => $row['telefonos'], 
            
'name'      => utf8_encode($row['name']), 
            
'apellidos'       => utf8_encode($row['apellidos']),
            
'calle'       => utf8_encode($row['calle']),
            
'localidad'        => utf8_encode($row['localidad']),
            
'style'       =>  $style
            
            
        
); 
    } 
    
// convertimos el array de datos a formato json 
    
echo json_encode($datos); 
/* Tienes resultados. */ 
    
}else{
/*No tienes resultados. */ 
    
echo '[]';
        }

Un saludo

Etiquetas: ajax, html, input, js
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 17:38.