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

Loco con el #hash

Estas en el tema de Loco con el #hash en el foro de Frameworks JS en Foros del Web. Buenas, me estoy volviendo loco con el #hash, y es que no me hace ningún caso! Lo que quiero es que cuando clicke en la ...
  #1 (permalink)  
Antiguo 18/06/2010, 03:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 16 años, 1 mes
Puntos: 1
Loco con el #hash

Buenas, me estoy volviendo loco con el #hash, y es que no me hace ningún caso!

Lo que quiero es que cuando clicke en la opción del menú ajax, pues evidentemente la url se actualice con el hash sin recargar la web.

Tengo 2 capas en la libreriaAjax.js, la capaContenedoraMenu y la capaContenedora, que es la que actualiza cuando elegimos del menú. Aquí lo podéis ver:

Código:
function creaAjax(){
  var objetoAjax=false;
  try {
   /*Para navegadores distintos a internet explorer*/
   objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   try {
     /*Para explorer*/
     objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
     } 
     catch (E) {
     objetoAjax = false;
   }
  }

  if (!objetoAjax && typeof XMLHttpRequest!='undefined') {
   objetoAjax = new XMLHttpRequest();
  }
  return objetoAjax;
}


function FAjax (url,capa,valores,metodo)
{
   var ajax=creaAjax();
   var capaContenedora = document.getElementById(capa);
   			
/*Creamos y ejecutamos la instancia si el metodo elegido es GET*/
	if (metodo.toUpperCase()=='GET'){
		ajax.open ('GET', url, true);
		ajax.onreadystatechange = function() {
			 if (ajax.readyState==1) {
					 capaContenedora.innerHTML="<img src=imagenes/cargando.gif>";
			 }
			 else if (ajax.readyState==4){
				if(ajax.status==200){ 
					 document.getElementById(capa).innerHTML=ajax.responseText; 
				}
				else if(ajax.status==404)
					 {
	
						 capaContenedora.innerHTML = "La direccion existe";
					 }
					 else
					 {
						 capaContenedora.innerHTML = "Error: ".ajax.status;
					 }
			}
		}
		ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		ajax.send(null);
		return
	}
}

function FAjaxMenu (url,capa,valores,metodo)
{
   var ajax=creaAjax();
   var capaContenedoraMenu = document.getElementById(capa);

/*Creamos y ejecutamos la instancia si el metodo elegido es GET*/
	if (metodo.toUpperCase()=='GET'){
		ajax.open ('GET', url, true);
		ajax.onreadystatechange = function() {
			 if (ajax.readyState==1) {
					 capaMenu.innerHTML="<img src=imagenes/cargando.gif>";
			 }
			 else if (ajax.readyState==4){
				if(ajax.status==200){ 
					 document.getElementById(capa).innerHTML=ajax.responseText; 
				}
				else if(ajax.status==404)
					 {
	
						 capaMenu.innerHTML = "La direccion existe";
					 }
					 else
					 {
						 capaMenu.innerHTML = "Error: ".ajax.status;
					 }
			}
		}
		ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		ajax.send(null);
		return
	}
}

Y el código del menú es, os pongo sólo la parte que debería actualizar el hash:

Código:
<tr>
<td width="180" class="menu-td"><a href="#sport=<?php echo $deporte; ?>&country=<?php echo $pais; ?>&league=<?php echo $liga; ?>&event=<?php echo $evento; ?>&ref=<?php echo $afiliado; ?>" onClick="FAjax('sportsbetting-event.php?sport='+ '<?php echo $deporte; ?>'+'&amp;country='+ '<?php echo $pais; ?>'+'&amp;league='+ '<?php echo $liga; ?>'+'&amp;event='+ '<?php echo $evento; ?>'+'&amp;ref='+ '<?php echo $afiliado; ?>' ,'capaContenedora','','get'); return false"><?php echo $evento; ?></a></td>
</tr>
No sería esto suficiente para que al clickar en la opción del menú, además de actualizar la capaContenedora (que ya me funciona bien), actualizará la url con el hash a partir del # ¿?¿?

Muchas gracias amigos, como siempre por la ayuda.

Última edición por sitoatic; 18/06/2010 a las 03:57 Razón: Para que se vea mejor el código
  #2 (permalink)  
Antiguo 20/06/2010, 04:37
 
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Loco con el #hash

Hola,

Subo el tema para arriba de nuevo ;P pero para matizar la consulta. Mi único problema ahora es que la función FAjax me anula la etiqueta href, por eso no me coloca en la url el hash #---.

La función es ésta, alguien sabe por qué me anula la etiqueta href por ejemplo en esta línea:

<a href="#nosotros" onClick="FAjax('nosotros.php' ,'capaContenedora','','get'); return false"><b>nosotros</b></a>

La función es:

Código:
function FAjax (url,capa,valores,metodo)
{
   var ajax=creaAjax();
   var capaContenedora = document.getElementById(capa);
   			
		ajax.open ('GET', url, true);
		ajax.onreadystatechange = function() {
			 if (ajax.readyState==1) {
					 capaContenedora.innerHTML="<img src=imagenes/cargando.gif>";
			 }
			 else if (ajax.readyState==4){
				if(ajax.status==200){ 
					 document.getElementById(capa).innerHTML=ajax.responseText; 
				}
				else if(ajax.status==404)
					 {
	
						 capaContenedora.innerHTML = "La direccion existe";
					 }
					 else
					 {
						 capaContenedora.innerHTML = "Error: ".ajax.status;
					 }
			}
		}
		ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		ajax.send(null);
		return
}
Gracias!!

Etiquetas: ajax, hash, loco
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:54.