ホームページ  >  記事  >  ウェブフロントエンド  >  Ajax操作でのユーザーセッションの失敗を処理する方法

Ajax操作でのユーザーセッションの失敗を処理する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-02 09:44:261553ブラウズ

今回は、Ajax操作ユーザーsessionの無効なセッションに対処する方法、Ajax操作ユーザーセッション失敗の注意事項について説明します。以下は実際的なケースです。見てみましょう。

spingMVC インターセプターを使用してユーザー セッションの失敗の問題を処理する場合、ユーザー セッションが失敗すると、javascript 文字列 の文字列が返され、ユーザーのブラウザが強制的にログイン ページにジャンプします。ただし、Ajax を使用してデータをリクエストすると、検証が失敗した後は文字列のみが応答され、JavaScript は実行されません。これは、Ajax リクエストがブラウザではなく XMLHTTPRequest オブジェクトによって開始されるためです。サーバーが返します。情報は XMLHTTPRequest オブジェクトによって受信され、js オブジェクトに保存されます。

この状況に対処するために、HTTP リクエストを最初にバックグラウンドで判断し、Ajax リクエストを通常の http リクエストとは別に処理することができます。
Ajax から送信されるリクエストのヘッダー情報を観察すると、Ajax リクエストのヘッダー情報に X-Requested-With:XMLHttpRequest が含まれていることがわかり、これにより Ajax リクエストであるかどうかを判断できます。

String requestType = request.getHeader("X-Requested-With");
if(requestType != null && "XMLHttpRequest".equalsIgnoreCase(requestType.trim())) {
  //如果是ajax请求
  response.setHeader("sessionStatus", "timeout");
  response.sendError(601, "session timeout.");
  return false;
}

JavaScript コードを使用すると、Ajax リクエストのグローバル デフォルト オプションを一度に設定できます。

//设置Ajax请求的全局默认options
jQuery.ajaxSetup({
  type:'post',
  complete:function(xhr, ts){ //XMLHttpRequest, textStatus
    var sessionStatus = xhr.getResponseHeader('sessionstatus');
    if(sessionStatus == 'timeout') {
      alert('页面过期,请重新登录!');
      window.top.location.href = 'Login.htm';
    }
  }
});

DataTables もデータ テーブルを作成するためにプロジェクトで使用されます。上記の JavaScript 構成メソッドはデータテーブルでは有効ではないことがわかりました。 エラー メッセージ参照: http://datatables.net/tn/7 ajax の error 属性を設定する必要があります

$('#example').dataTable( {
 "ajax": {
  "url": "findRoles.htm",
  "type": "POST",
  "error": function(xhr, ts, et) { //XMLHttpRequest, textStatus, errorThrown
    var sessionStatus = xhr.getResponseHeader('sessionstatus');
    if(sessionStatus == 'timeout') {
      alert('页面过期,请重新登录!');
      window.top.location.href = 'Login.htm';
    }
  }
 }
});

この記事の事例を読んだ後は、この方法を習得したと思います。 PHP 中国語 Web サイトの他の関連記事にも注目してください。

推奨読書:

jQuery + Ajax は、入力された確認コードが渡されるかどうかを決定します

Ajax はどのようにしてスマート検索ボックスのプロンプト機能を作成しますか

以上がAjax操作でのユーザーセッションの失敗を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。