Comunidad de diseño web y desarrollo en internet online

Problema: Creando Links dinámicos con AJAX

Citar            
MensajeEscrito el 08 Mar 2007 05:03 pm
Un saludo para la comunidad:

He estado trabajando con AJAX, pero me he estancado a la hora de insertar unos links que creo dinámicamente a partir de un documento XML. Se trata de ésto:

Tengo un menú principal en el que muestro las categorías principales. Al dar un click a estos links muestro un submenú que es traído de un documento XML, dependiendo de la categoria pulsada:

Código :

<a onclick="javascript: CargarSubmenu('MC')" href="#">Mi categoría</a>

En donde la función "Cargarsubmenu(Param)", recibe como parámetro esa variable (Categoria) que mediante AJAX es enviada por "GET" a un fichero "Submenu_gen.php", que es el lee el archivo XML e imprime el código html, que es el que se mostrará en el documento principal (index.hml) en un div llamado "destino", mediante:

Código :

destino.innerHTML = ajax.responseText;


Ahora bien, lo retornado es algo como esto (Creado dinámicamente mediante php):

Código :

<ul>
<li><a href="#" onclick="javascript: CargarInfo('MC', 'SubOpt')">Opcion de mi submenu</a></li>
</ul>

Y al final del fichero "Submenu_gen.php", tengo ésto:

Código :

header("Content-type: text/xml");

Por supuesto que el submenú contiene más opciones del mismo estilo, el problema es que la función "CargarInfo(Param1, param2)", no la realiza.

Cabe mencionar que utilizo un sólo (*.js) en donde tengo todas mis funciones, y lo mando llamar el en head de mi documento principal.

¿Será que esa inclusión no es válida para el submenú retornado mediante AJAX, y por lo tanto no encuentra la función de Cargarinfo?.

No sé mucho sobre AJAX, pero a mi parecer, lo retornado en el llamado Asíncrono es tomado como un pequeño fragmento de código independiente (mini-página), que debe tener sus propias importaciones de js's. (Qué se yo, ni siquiera sé si es posible hacer ésto o acaso tendrá que ver con el "Content-type" del Submenu.php?). Bueno,espero y me puedan ayudar.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 08 Mar 2007 06:42 pm
Es extraño, si estas añadiendo los eventos asi no deberias tener problemas, a menos que estes incluyendo el .js dentro de la llamada con ajax.

Por cierto, usar las funciones en el href no es buena idea, lo mejor es agregarlo en el evento onclick para asi mantener una href real y mantener la accesibilidad de tu enlace.

Por NEO_JP

BOFH

5724 de clabLevel

13 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Premio_Secretos Team Cristalab

Front-end Developer en Washington, DC

firefox
Citar            
MensajeEscrito el 08 Mar 2007 06:53 pm
Como dice Neo, es extranio que no funcione, porque se ve simple de realizar, hasta ahora no me topado con XML y AJAX, pero para un caso como el tuyo no entiendo la necesidad de usarlo, mira todo lo que haces:

Llamas a un evento en javascript-> llamas a ajax-> llamas a un PHP -> y llamas a un XML

No crees que es demasiado?, me parece que el XML debe ser el motivo del error

Por Max

Claber

267 de clabLevel



Genero:Masculino  

Lima - Peru

firefox
Citar            
MensajeEscrito el 08 Mar 2007 09:08 pm

Max escribió:


Llamas a un evento en javascript-> llamas a ajax-> llamas a un PHP -> y llamas a un XML

No crees que es demasiado?, me parece que el XML debe ser el motivo del error
Si, tienes razón Max, tal vez sea demasiado.
Pensaré en una forma de hacerlo más simple, pero no me voy quedar tranquilo, sabiendo que que ese código me venció.
Aclaro que probé la función "CargarInfo()", escribiéndola directamente en la página principal y funciona :(, la única manera en que no funciona es cuando los agrego en los links del submenú (creados de forma dinámica).

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 08 Mar 2007 09:49 pm
Hasta ahora no he hecho nada complejo en AJAX, pero no me ha resultado tan difícil.

Por NEO_JP

BOFH

5724 de clabLevel

13 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Premio_Secretos Team Cristalab

Front-end Developer en Washington, DC

firefox
Citar            
MensajeEscrito el 09 Mar 2007 06:13 pm
En fin , después de mucho probar, al parecer ya encontré una solución, agregué:

Código :

echo  "<script languaje=\"javascript\" type=\"text/javascript\" scr=\"js/mijavascript.js\"></script>";


En el fichero php a fin de que AJAX me devolviera un código como este:

Código :

<script languaje="javascript" type="text/javascript" scr="js/mijavascript.js">
   <ul>
      <li><a onclick="CargarInfo(param1,param2)">Submenu 1</a></li>
      <li><a onclick="CargarInfo(param1,param2)">Submenu 2</a></li>
      <li></li>
  </ul>


En el div de mi documento principal.

Al final creo que no estaba tan equivocado, ya que al parecer mis submenús (Cargados mediante AJAX) no me reconocía la función CargarInfo(), a pesar de que estaba incluido en el head del index; tuve que especificarlo allí.

Dejo el dato por si alguna ves se encuentran con algo como eso. Pero si encuentran una mejor, háganmela saber por favor.

Un saludo y gracias y por sus comentarios.

Por cierto, NEO_JP, me puedes dar un ejemplo de dónde puedo agregar mi función, a fin de que no sea en el <a></a>?

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.