Retroceder   Foros del Web > Programación para sitios web > AJAX

Respuesta
 
Herramientas Desplegado
Antiguo 04-abr-2007, 08:36   #1 (permalink)
Computer XTress ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2004
Mensajes: 613
Exclamación ¿Lo estaré haciendo de la forma incorrecta? (GRACIAS)

Hola a todos. Estoy dando mis primeros pasos en AJAX y me encuentro con un problema que no logro resolver:

Tengo en mi página una lista de items (UL) adentro de una div:

Código:
<?php
  // Conexion BD, consulta MySQL, etc.
?>
<html>
<head>
<title>titulo</title>
<!-- includes de javascript varios -->
</head>
</body>

<div id='contenedor_de_listas'>

<ul id='listas'>
  <li>
    <ul id='lista_1'>
      <li id='item_n' onmouseout='funcion_de_js(id_item)'></li>
      <li id='item_n' onmouseout='funcion_de_js(id_item)'></li>
      <li id='item_n' onmouseout='funcion_de_js(id_item)'></li>
      <li id='item_n' onmouseout='funcion_de_js(id_item)'></li>
      <li id='item_n' onmouseout='funcion_de_js(id_item)'></li>
    </ul>
  </li>
</ul>


</div>

</body>
</html>
La lista del ejemplo se ve estática, pero en realidad son varias listas cuyos items se levantan de la BD. Los usuarios pueden ordenar los items haciendo drag & drop (scriptaculous).

Cuando el usuario SUELTA un item se actualiza en la BD el orden de la lista via AJAX: Esto funciona perfectamente.


El problema:

Como quiero que se refresque el contenido de la lista al soltar cada item sin que la pagina haga RELOAD, cree un archivo PHP separado parecido a este:

Código PHP:
<?php
// conexion BD
// pido datos y hago loop

$_respuesta "<ul id='listas'>";
$_respuesta "  <li>";
$_respuesta "    <ul id='lista_1'>";
$_respuesta "      <li onmouseout='funcion_de_js(id_item)' id='item_n'></li>";
$_respuesta "      <li onmouseout='funcion_de_js(id_item)' id='item_n'></li>";
$_respuesta "      <li onmouseout='funcion_de_js(id_item)' id='item_n'></li>";
$_respuesta "      <li onmouseout='funcion_de_js(id_item)' id='item_n'></li>";
$_respuesta "      <li onmouseout='funcion_de_js(id_item)' id='item_n'></li>";
$_respuesta "    </ul>";
$_respuesta "  </li>";
$_respuesta "</ul>";

echo 
$_respuesta;
?>

Y luego un javascript que realiza el request via background y maneja la respuesta de ese request con esta funcion:

Código:
function updateListsDiv() {

	if (request.readyState == 4) {
		if (request.status == 200) {

			var resp = request.responseText;

			if (resp) {
document.getElementById("contenedor_de_listas").innerHTML = resp;
			}

		}
	}
}
Finalmente, ahora mi index, en el que originalmente hacia la consulta MySQL y el armado de la lista, tengo dentro de la div contenedora de listas una función Javascript que llama al ajax que hace el request en background al NUEVO archivo.php que actualiza la div contenedora:

Código PHP:

<?php
  
// Ya no hago consultas aquí
?>
<html>
<head>
<title>titulo</title>
<!-- includes de javascript varios -->
</head>
<body>

<div id='contenedor_de_listas'>

<script language='javascript' type='text/javascript'>
   // Llamo a la funcion que actualiza esta div metiendole la lista
  AJAX_actualizar_lista_contenedora();
</script>

</div>

</body>
</html>

La función AJAX_actualizar_lista_contenedora(); también la llamo, por ejemplo, cuando termino de ordenar una lista, para que se vean datos obtenidos de la base de datos. Es decir, la misma funcion se llama cuando se carga por 1ra vez la página y cuando realizo actualizaciones en la BD.

Todo esto parece funcionar a simple vista bien, pero tengo algunos problemas:
- Firefox me dice que hay basura tras uno de los divs... pero no hay errores de PHP ni algun tipo de respuesta que esté generando basura.

- Internet Explorer no me permite re-ordenar bien las listas

- Algunos eventos de JS de la lista ahora dan pequeños errores también.



La cuestion es que ESTIMO que no estoy haciendo las cosas de la forma correcta... ¿qué consejo me pueden decir teniendo en cuenta este esquema?

Les agardezco mucho y disculpen por tanto texto, quise ser lo más explicativo posible.

GRACIAS!

Última edición por Computer XTress; 04-abr-2007 a las 08:42.
Computer XTress está desconectado   Responder Citando
Antiguo 04-abr-2007, 13:42   #2 (permalink)
Computer XTress ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2004
Mensajes: 613
Re: ¿Lo estaré haciendo de la forma incorrecta? (GRACIAS)

¿alguna idea?

Gracias! :)
Computer XTress está desconectado   Responder Citando
Antiguo 10-abr-2007, 08:14   #3 (permalink)
Computer XTress ha deshabilitado el karma
 
Fecha de Ingreso: diciembre-2004
Mensajes: 613
Re: ¿Lo estaré haciendo de la forma incorrecta? (GRACIAS)

Bueno ya lo solucione. Gracias igual :P

Saludos.
Computer XTress está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 17:52.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93