2011-08-05 41 views
8

Quiero agregar algunos parámetros GET a la URL de la página. Estoy cargando el contenido de la siguiente manera:Cambiar url en solicitud ajax

$("#content").load("shop.pl #content .product", $.param({categ:1)})); 

¿Cómo puedo cambiar la dirección URL para tener el mismo parámetro ?categ=1?

+0

asegurarse de que puede hacerlo sin cambiar la página. – Nalum

Respuesta

11

Usted puede utilizar el HTML 5 pushState API para lograrlo. Sin embargo, solo los navegadores más nuevos lo admiten y IE ni siquiera lo admite en IE9. No había forma de hacer esto previsiblemente. Sin embargo, hay una convención de que usaría location.hash para indicar una página cuyo estado fue modificado por una solicitud ajax. Para obtener más información sobre cómo usar los valores hash de url para indicar el estado en su página, es posible que desee echar un vistazo a this.

Hay una biblioteca, History.js, que se puede utilizar para la transición a pushState. Su API está muy cerca de la API de pushState, pero proporcionará de forma transparente una recuperación de fragmentación hash si el navegador no es compatible con pushState.

+1

+1 por la misma idea que yo - solo que más rápido (¡estaba editando la pregunta!) :-) – andyb

+0

10x Voy a probar history.js – bliof

+0

pushState Enlace API roto – michaelsnowden

3

Su contenido se carga a través de AJAX, así que quizás la URL debe tener su fragmento de hash modificado - ver http://code.google.com/web/ajaxcrawling/docs/specification.html

No
+2

OP quiere cambiar los parámetros GET del sitio web actual, no la parte hash de la URL, creo. – Tadeck

+1

Sí, pero esto no es posible en el navegador que no es compatible con la API PushState de HTML5, que básicamente no son los navegadores más recientes. Manipular el fragmento hash de una URL era * por convención * la forma de ir para indicar y restaurar el estado alterado de una página web. –