Si cambio el hash como tal: window.location.hash = "main/0/sub/1/na/false";
. La dirección en el navegador cambia a http://mysite.com/#main/0/sub/1/na/false
. La función onhashchange de la página se activa y todo funciona como debería.Usando barra en window.location.hash
Sin embargo, en Firebug puedo ver que también estoy enviando una solicitud a: http://mysite.com/main/0/sub/1/na/false
... URL sin hash, que da como resultado un 404 silencioso en la consola.
Cuando depuro veo que ocurre en el punto window.location.hash
.
Pero, si cambio el hash como así: window.location.hash = "main=0&sub=1&na=false";
no se envía ninguna solicitud adicional.
¿Por qué se envía la solicitud adicional en el primer ejemplo?
ACTUALIZACIÓN: me di cuenta de que envía la solicitud después de window.location.hash
y antes (durante?) $(window).bind('hashchange')
. Ejemplo si tengo ...
window.location.hash = 'main/0/sub/1/na/false'; // Breakpoint 1 in Firebug
$(window).bind('hashchange', function(e) {
e.preventDefault(); // Breakpoint 2 in Firebug
e.stopPropagation();
});
Cuando se detiene en el punto de interrupción 1, no se envía ninguna solicitud. Cuando se detiene en el punto de interrupción 2, la solicitud ya se envió.
Puedo ver en Apache Tomcat que la solicitud se está enviando también.
voy a añadir que he jQuery y jQuery Mobile enchufado
ACTUALIZACIÓN 2:. Extracción jQuery Mobile se resuelve el problema. Sin embargo, lo necesito:/
ACTUALIZACIÓN 3
Si alguien está interesado: con jQuery Mobile: http://jsfiddle.net/pioSko/hz5PU/3/
Sin jQuery Mobile: http://jsfiddle.net/pioSko/hz5PU/4/
abrir Firebug u otra aplicación de depuración y prueba los enlaces.
¿Las solicitudes llegan realmente a su servidor? ¿Qué versión de Firebug, Firefox? No lo veo en uno muy antiguo aquí, ni en un Chrome reciente, así que supongo que esto podría ser un error en alguna parte. –
No se puede reproducir con FF 12.0 y 13.0.1. Intentó 'window.location.hash =" main/0/sub/1/na/false ";' en la consola de Firebug en una página aleatoria, no se observaron solicitudes de red. – lanzz
He creado un sitio ficticio y en él no puedo reproducir este error. Por lo tanto, tiene que ser más profundo en el código. – pioSko