web-dev-qa-db-ja.com

jQueryはURL変数を1つ削除します

私はwebアプリケーションの作成で忙しいので、多くのエラーを処理する必要があるため、jquery uiダイアログボックスを作成しました。これらのエラーが表示されます。エラーはデータベースによって取得されます。例えば:

ログインしようとしたときにユーザー名/パスワードが間違っていると、リダイレクトされます

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

次に、アプリケーションは、データベースでログインが正しくないエラーを検索し、それをユーザーに表示する必要があることを認識しています。これですべてうまくいきます。なんらかの理由でユーザーがこの特定のページを再読み込みする場合を除いて、エラーメッセージを取得する必要はありませんが、再度取得する必要があります。

したがって、私の計画は、ある種の関数をダイアログボックスのcloseイベントにバインドし、URLにeパラメータを指定せずにユーザーを同じページのバグにリダイレクトすることです。どうすればこれを達成できますか?いろいろなことを試しました。しかし、それを機能させることができませんでした。

私が試したこと:

基本的に、すべての可能なパラメーターを取得し、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;

しかし、それは機能せず、醜い

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

これにより、クエリ文字列からeパラメータのすべてのインスタンスが削除され、ページが更新されます。

30
jli

それを行う1つの方法:

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 event またはより充実した機能 BBQプラグイン をお勧めします。ハッシュを操作します。

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

Urlオブジェクトには、関数deleteを持つsearchParams属性があります。これにより、urlObjectからmyParameterが削除されます。もう一度URLにアクセスする場合は、次のようにします。

url = urlObject.href;

さらに:

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

1
Maxim Maslov