今回は、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 サイトの他の関連記事を参照してください。