Yo uso la siguiente función:
$( document ).ajaxComplete(function() { var currenturl = window.location.href; var decodedUri = decodeURIComponent(currenturl); var decodedUri2 =decodedUri.replace("&manufacturer[]=","/").replace("&page=","/").replace("&sort=","/").replace("&order=","/"); history.pushState("", "", decodedUri2); });Necesito de alguna manera en cada finalización de ajax para cambiar la URL original y la URL no modificada previamente a través de pushState.
Con la función anterior en la primera finalización de ajax, pushState hace el trabajo, pero en la siguiente finalización de ajax, pushState decodedUri2 intenta reemplazar la URL modificada, pero necesito cada vez cambiar la URL original y pushState el resultado. ¿Es eso posible?
¿Alguna idea para lograr esto?
¡Gracias!
EDITAR: reformulación de la pregunta. Cada vez que se completa un ajax, se agregan algunos atributos a la URL y necesito reemplazar esos atributos. Y nuevamente lo mismo con cada solicitud de ajax. Entonces, en realidad, necesito de alguna manera cada vez que se completa una finalización de ajax para presionar el estado de la URL actual después de la finalización de ajax pero desde el estado original.
EJEMPLO : http://ocdemo.eu/desktops .
Si selecciona filtros de la columna izquierda cada vez que la URL cambia con ajax. Entonces, cada vez que necesito que la URL que se muestra sea reemplazada por otra cosa
Para cualquiera que busque esto, que quiera aplicar pushState sin actualizar la URL de la página. Puede omitir el parámetro por completo, como se indica en los documentos:
https://developer.mozilla.org/en-US/docs/Web/API/History/pushState
Ambos funcionarán:
history.pushState("", ""); history.pushState("", "", "");Si está buscando cambiar un parámetro de URL en la llamada AJAX en la URL actual, hay mucha discusión en el hilo:
Tendría que capturar esa URL en una variable y usar eso:
var initialUrl; $( document ).ajaxComplete(function() { var currenturl = window.location.href; if (!initialUrl) { initialUrl = decodeURIComponent(currenturl); } var decodedUri2 =initialUrl.replace("&manufacturer[]=","/").replace("&page=","/").replace("&sort=","/").replace("&order=","/"); history.pushState("", "", decodedUri2); });