Подтвердить что ты не робот

JQuery удаляет одну переменную URL

Я занимаюсь созданием веб-приложения, которое должно обрабатывать много эррр и прочее, поэтому я создал диалоговое окно jquery ui. Который показывает эти ошибки. Ошибки извлекаются базой данных. например:

когда мое имя пользователя/пароль неверно, когда я пытаюсь войти в систему, я перенаправляюсь на

http://domain.com/?do=login&e=login-incorrect

приложение затем знает, что он должен искать неверную ошибку входа в базу данных и показывать ее пользователю. Теперь все идет хорошо. Кроме того, когда по какой-то причине пользователь перезагрузит эту конкретную страницу, он снова получит сообщение об ошибке, пока ему не нужно его достать.

поэтому мой план заключается в привязке какой-либо функции к событию close диалогового окна и перенаправлению пользователя на ту же ошибку страницы без параметра e в URL-адресе. Как я могу это достичь. Я пробовал всевозможные вещи. Но он не мог заставить его работать.

Что я пробовал:

bassicly попытался получить все возможные параметры и сшить их вместе, кроме параметра e. так:

$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;

Но это не работает и его уродливый

4b9b3361

Ответ 1

location.href=location.href.replace(/&?e=([^&]$|[^&]*)/i, "");

Это приведет к удалению всех экземпляров параметра e из строки запроса и обновлению страницы.

Ответ 2

Один из способов сделать это:

location.search = location.search.replace(/&e=[^&;]*/,'');

Это перезагрузит страницу, как вы упомянули, без параметра "e"


Однако гораздо лучше использовать хэш вместо этого: http://domain.com/?do=login#login-incorrect. Затем вы можете проверить хеш при загрузке страницы и открыть диалоговое окно ошибок, если найден хэш login-incorrect:

if (location.hash.indexOf('login-incorrect') != -1) {
  // Open your jQuery UI dialog here
}

И если они закроют диалог, вы можете просто очистить хэш, не обновляя страницу:

$('.closeErrorDialog').click(function(){
  location.hash = '';
});

Если у вас их будет много, я рекомендую Ben Alman событие jQuery hashchange или более полнофункциональный плагин BBQ, который значительно облегчит вашу жизнь, когда вы работаете с хэшами.

Ответ 3

urlObject = new URL(url);
urlObject.searchParams.delete('myParameter');

У Url Object есть атрибут searchParams, который имеет функцию delete. Это удалит myParameter из urlObject. Если вы хотите снова получить доступ к своему URL-адресу, просто:

url = urlObject.href;

Далее:

https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/delete https://developer.mozilla.org/de/docs/Web/API/URL/searchParams