removedata - jQuery elimina una variable de URL
remove value jquery (2)
Estoy ocupado haciendo una aplicación web, que necesita procesar muchos errores y cosas así que hice un cuadro de diálogo de jQuery ui. Que muestra estos errores Los errores son recuperados por la base de datos. por ejemplo:
cuando mi nombre de usuario / contraseña es incorrecto cuando intento iniciar sesión me redirigen a
http://domain.com/?do=login&e=login-incorrect
la aplicación entonces sabe que tiene que buscar el error de inicio de sesión incorrecto en la base de datos y mostrar eso al usuario. Ahora todo esto va muy bien. Excepto que cuando por alguna razón el usuario vuelva a cargar esta página en particular, recibirá nuevamente el mensaje de error mientras no necesite obtenerlo.
entonces mi plan es vincular algún tipo de función al evento close
del cuadro de diálogo y redirigir al usuario al mismo error de página sin el parámetro e en la URL. ¿Cómo podría lograr esto? Intenté todo tipo de cosas. Pero no pude hacer que funcione.
Lo que intenté:
Trató de obtener todos los parámetros posibles y unirlos, excepto el parámetro e. al igual que:
$ERROR = $_GET[''e''];
$DO = $_GET[''do''];
$P = $_GET[''p''];
$C = $_GET[''c''];
$T = $_GET[''t''];
$ACTION = $_GET[''action''];
// URL WITHOUT ERRORS
$needP = "";
$needACTION = "";
$needDO = "";
if($P != ""){
$needP = "p=".$P."&";
}
if($DO != ""){
$needDO = "do=".$DO."&";
}
if($ACTION != ""){
$needACTION = "action=".$ACTION."";
}
$NOERRORURL = $BASEURL."?".$needP.$needDO.$needACTION;
Pero no funciona y es feo
Una forma de hacerlo:
location.search = location.search.replace(/&e=[^&;]*/,'''');
Eso volverá a cargar la página como mencionas, sin el parámetro ''e''
Sin embargo, un enfoque mucho mejor es utilizar un hash en su lugar, como este: http://domain.com/?do=login#login-incorrect
. Luego puede verificar el hash cuando se carga la página y abrir su cuadro de diálogo de error si se encuentra el hash login-incorrect
:
if (location.hash.indexOf(''login-incorrect'') != -1) {
// Open your jQuery UI dialog here
}
Y si cierran el diálogo, puede borrar el hash sin tener que actualizar la página:
$(''.closeErrorDialog'').click(function(){
location.hash = '''';
});
Si vas a tener muchos de estos, te recomiendo el evento jQuery hashchange de Ben Alman o el complemento BBQ con más funciones que te facilitará mucho la vida cuando trabajes con hash.
location.href=location.href.replace(/&?e=([^&]$|[^&]*)/i, "");
Esto eliminará todas las instancias del parámetro e de la cadena de consulta y actualizará la página.