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

Problemas con variables y ajax

Estas en el tema de Problemas con variables y ajax en el foro de Frameworks JS en Foros del Web. Hola, Despues de muchas horas y mucho google no he podido dar con la solución a mi problema que creo que es facil. Pero no ...
  #1 (permalink)  
Antiguo 23/09/2010, 08:55
 
Fecha de Ingreso: febrero-2009
Ubicación: Barcelona
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Problemas con variables y ajax

Hola,
Despues de muchas horas y mucho google no he podido dar con la solución a mi problema que creo que es facil. Pero no lo veo.

Tengo un menu hacho con SQL que llama a 2 funciones de AJAX con los eventos onclick y onmousedown

Ambas se ejecutan bien y muestran la información en los respectivos div´s

Mi problema es que en uno de los div´s me muestra el codigo de la opcion de menu que se ha clicado pero no he podido asignar ese valor a una variable para que me ilumine la opcion respectiva.

Codigo:


echo "<div id='formulario2'></div>"; //esto muestra correctamente el valor del id del menu
echo "<br /><br />";
while($row = mysql_fetch_array($sql)){
if ($row['fmg_id']==$menus) //necesito que el valor del id=formulario2 sea igual $menus
{
echo "<a style=\"text-decoration:bold;cursor:pointer;\" onclick=\"pedirDatos('".$row['fmg_id']."','cast','".$row['fmg_familia']."','".$row['fmg_titulo']."')\" onmousedown=\"opcionMenu(".$row['fmg_id'].")\" >".$row['fmg_titulo_select']."</a><br/>";
echo "<br />";
}
else {
echo "<a style=\"text-decoration:bold;cursor:pointer;\" onclick=\"pedirDatos('".$row['fmg_id']."','cast','".$row['fmg_familia']."','".$row['fmg_titulo']."')\" onmousedown=\"opcionMenu(".$row['fmg_id'].")\" >".$row['fmg_titulo']."</a><br/>";
echo "<br />";
}
}

EN el div con id formulario 2 me muestra el resultado correcto, pero no se como hacer que ese resultado se asigne en una variable que se llamaría $menus y que es la que esta en el if

Alquien me ayuda?
  #2 (permalink)  
Antiguo 23/09/2010, 10:37
 
Fecha de Ingreso: febrero-2009
Ubicación: Barcelona
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problemas con variables y ajax

Ya he solucionado una parte, pues simplemente es un asunto de variables de sesion, y funciona correctamente.

Pero ahora el problema es que necesito refrescar el div que contine el menu:

echo "<div id='mbi'>";
...aqui va tod el codigo que genera el menu
echo "</div>";

La funcion en ajax:
function refrescarMBI(){

if (ajax.readyState == 4 ){
document.getElementById (mbi).innerHTML = ajax.responseText;
}
}

Que seguro que esta mal.

Alguna ayuda ??

Gracias de antemano.
  #3 (permalink)  
Antiguo 23/09/2010, 12:51
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemas con variables y ajax

Hola

Lo está tratando como una variable
Cita:
document.getElementById (mbi).innerHTML
ha de ser
document.getElementById ('mbi').innerHTML
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 24/09/2010, 01:18
 
Fecha de Ingreso: febrero-2009
Ubicación: Barcelona
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problemas con variables y ajax

Gracias Alder por tu respuesta.

Desafortunadamente sigue sin funcionar.

EL problema parece ser que siempre pide una URL, pero yo solo quiero refrescar el mismo contenido que hay. Parecido al efecto que hace un F5 pero solo en ese DIV. De hecho cuando hago F5 funciona, pero refresca toda la pagina y el div central me regresa al home, por eso solo quiero refrescar el div del menu.
  #5 (permalink)  
Antiguo 24/09/2010, 07:05
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemas con variables y ajax

Hola

Arreglo al código que muestras el error es ese. Ahora habría que ver el resto del código, tanto el javascript, HTML y PHP

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 24/09/2010, 09:33
 
Fecha de Ingreso: febrero-2009
Ubicación: Barcelona
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problemas con variables y ajax

Esta es la parte de ajax:

Código Javascript:
Ver original
  1. function objetoAjax(){
  2.     var xmlhttp=false;
  3.     try {
  4.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.     } catch (e) {
  6.         try {
  7.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.         } catch (E) {
  9.             xmlhttp = false;
  10.           }
  11.     }
  12.  
  13.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  14.         xmlhttp = new XMLHttpRequest();
  15.     }
  16.     return xmlhttp;
  17. }
  18.  
  19. function refrescarMBI()
  20.       {
  21.           ajax=nuevoAjax();
  22.           ajax.open("GET", "URL");
  23.           ajax.onreadystatechange=function()
  24.           {
  25.               if (ajax.readyState==4)
  26.               {
  27.                   document.getElementById("mbi").innerHTML = ajax.responseText;
  28.               }
  29.           }
  30.           ajax.send(null)
  31.       }

Este es el codigo del vinculo:

Código Javascript:
Ver original
  1. echo "<a style=\"text-decoration:bold;cursor:pointer;\"   onclick=\"pedirDatos('".$row['fmg_id']."','cast','".$row['fmg_familia']."','".$row['fmg_titulo']."')\" onmousedown=\"refrescarMBI()\"  >".$row['fmg_titulo_select']."</a><br/>";

Y este es el PHP en el cual esta ese boton y el div que quiero refrescar:

Código PHP:
Ver original
  1. <html>
  2. <head>
  3.     <meta http-equiv="Content-Type" content="text/html; charset=ISO 8859-1">
  4.     <script language="JavaScript" type="text/javascript" src="ajax.js"></script>
  5. </head>
  6. <body>
  7. <div class="menu" id="mbi">
  8.     <?php
  9.     //conexion a base de datos
  10.     $bd_host = "localhost";
  11.     $bd_usuario = "xxxxx";
  12.     $bd_password = "xxxxx";
  13.     $bd_base = "xxxxx";
  14.     $con = mysql_connect($bd_host, $bd_usuario, $bd_password);
  15.     mysql_select_db($bd_base, $con);
  16.     $menu=$_SESSION['menu'];
  17.     $familia='mbia';
  18.     $sql=mysql_query("SELECT * FROM fmg WHERE fmg_familia='$familia' AND fmg_lang='$lang' ORDER BY fmg_orden ASC",$con);
  19.     echo "<a href='index.php?lang=$lang' target=_self>home</a>";
  20.     echo "<br /><br />";
  21.     while($row = mysql_fetch_array($sql))
  22.         {
  23.             if ($row['fmg_id']==$menu)
  24.             {
  25.                 echo "<a style=\"text-decoration:bold;cursor:pointer;\"   onclick=\"pedirDatos('".$row['fmg_id']."','cast','".$row['fmg_familia']."','".$row['fmg_titulo']."')\" onmousedown=\"refrescarMBI()\"  >".$row['fmg_titulo_select']."</a><br/>";
  26.                 echo "<br />";
  27.             }
  28.             else {
  29.                 echo "<a style=\"text-decoration:bold;cursor:pointer;\" onclick=\"pedirDatos('".$row['fmg_id']."','cast','".$row['fmg_familia']."','".$row['fmg_titulo']."')\"  onmousedown=\"refrescarMBI()\"  >".$row['fmg_titulo']."</a><br/>";
  30.                 echo "<br />";
  31.             }
  32.         }
  33.     echo "<br />";
  34.     echo "<br />";
  35.     $familia2='mbia_2';
  36.     $sql2=mysql_query("SELECT * FROM fmg WHERE fmg_familia='$familia2' AND fmg_lang='$lang' ORDER BY fmg_orden ASC",$con);
  37.     while($row = mysql_fetch_array($sql2))
  38.         {
  39.             echo "<a style=\"text-decoration:bold;cursor:pointer;\" onclick=\"pedirDatos('".$row['fmg_id']."','cast','".$row['fmg_familia']."','".$row['fmg_titulo']."')\">".$row['fmg_titulo']."</a><br/>";
  40.             echo "<br />";
  41.         }
  42.     ?>
  43. </div>
  44. </body>
  45. </html>


DIme si hace falta algo mas.

Gracias Adler
  #7 (permalink)  
Antiguo 24/09/2010, 12:31
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemas con variables y ajax

Hola

A simple vista destaca esto
Cita:
ajax.open("GET", "URL");
URL no es una ruta. Ahí has de escribir la ruta física () o virtual () del archivo PHP

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 25/09/2010, 05:58
 
Fecha de Ingreso: febrero-2009
Ubicación: Barcelona
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problemas con variables y ajax

Hola,
Si, esto esta claro, pero al poner la ruta tampoco va.

Ahora estoy mirando el uso de 2 funciones a través de otra función, pero tampoco, pues me ejecuta o una u otra.

La conclusión a la que estoy llegando es que necesito es la forma en que ajax me actualice un DIV y me refresque otro al mismo tiempo.

Mi problema es que necesito actualizar el div central y que el div del menú se refresque pues ahí esta el if then que cambia el color a la opción del menú seleccionado.

Alguien tiene alguna idea???
  #9 (permalink)  
Antiguo 25/09/2010, 08:33
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemas con variables y ajax

Hola

Me estoy temiendo lo peor. Te hago esta pregunta la manera mas sencilla que soy capaz. El código que encierras entre etiquetas PHP (Código PHP:) ¿no será el único que tienes? ¿habrá otra página PHP, donde se evalúan los datos recibidos para posteriormente enviarlos?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 25/09/2010, 16:40
 
Fecha de Ingreso: febrero-2009
Ubicación: Barcelona
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problemas con variables y ajax

Creo que no me explique bien.

Todo me funciona correctamente.
El código PHP es solo uno de los menús y el punto del problema comienza en la fila 16.
Allí yo asigno la variable de sesión "menu", con el id de la opción de menú que se ha pulsado.
Luego esa variable menu la uso para "colorear" el nombre del menú de rojo y que permanezca así hasta tanto pulsen de nuevo, esto en la linea 23.

El Problema está en que la función pedirDatos del evento onClick, lo que hace es mostrar en el div de id="formulario" la información, pero como es Ajax, cambia el div central y una imagen.
Este es el código de la función:
Código PHP:
Ver original
  1. function pedirDatos(idempleado, lang, familia, titulo){
  2.     divFormulario = document.getElementById('formulario');
  3. //        divMenu = document.getElementById('mbi');
  4.     divImagen = document.getElementById('imagen');
  5.     //instanciamos el objetoAjax
  6.     ajax=objetoAjax();
  7.         ajax.open("POST", "consulta_id.php");
  8.     ajax.onreadystatechange=function() {
  9.         if (ajax.readyState==4) {
  10.             //mostrar resultados en div
  11.             divFormulario.innerHTML = ajax.responseText                        
  12.                         //divMenu.innerHTML = ajax.responseText
  13.             //cambio una imagen en top
  14.             divFormulario.style.display="block";
  15.                         divImagen.innerHTML="<img alt src='images/top_2.png'>";
  16.         }
  17.     }

Funciona correctamente, lee consulta_ip.php y lo muestra correctamente, también cambia la imagen correctamente, pero necesito que también me refresque el div "mbi",
divMenu = document.getElementById('mbi'); solo eso, refrescarlo para que evalúe el if then.
No necesito que me cambie nada.

Pues eso es lo que no logro hacer.

Probé con la función que hay mas arriba "refreshMenu" y ahí si que funciona, me colorea la opción del menú de rojo, pero entonces no cambia en el div formulario.

Sigo buscando como resolverlo !!!!

Gracias

Última edición por JuanZapata; 25/09/2010 a las 16:49
  #11 (permalink)  
Antiguo 26/09/2010, 07:21
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemas con variables y ajax

Hola

Le he dado varias vueltas y no logro verlo. Si reescribes el contenido de mb1, este valor reemplazará al código PHP. Entonces entiendo que ese código PHP ha ser parte de la página que se abra desde refrescarMBI, donde se hará la evaluación y responderá con el menú ya montado

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #12 (permalink)  
Antiguo 30/09/2010, 14:28
 
Fecha de Ingreso: febrero-2009
Ubicación: Barcelona
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problemas con variables y ajax

Finalmente he reescrito el menú como una lista (sin base de datos), usando css y jquery para hacer un menú tipo lista pero aplicando una hoja de estilo solo a los menús.
Ahora ya funciona !!!
Menos en IE7 por supuesto !!!

Etiquetas: ajax, includes, php, variables
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 13:22.