2017-09-29 10 views
1

私のウェブプロジェクトでは、あるブラウザタブでユーザがログアウトされた場合、他のブラウザタブのログインページにリダイレクトされます(何かをクリックするなど)。しかし、ユーザーのクリックが子ページへのajaxで親ページ呼び出しを呼び起こし、そのページをそのページの上にレンダリングすると、この動作は機能しません。 ajaxはログインページを返すだけで、画面に正しく表示されません。Javascript - クラスを持つ要素がプレーンストリングに存在するかどうかをチェックする方法?

ユーザーが既にログアウトしているかどうかを判断することはできませんので、次の実装を試行しています。サーバーから返された子ページがログインページの場合、親ページをすぐにログインページにリダイレクトします。

$.ajax({ 
    type: 'GET', 
    url: someURL, 
    success: function (response) { 
    //if a user has been logged out, 
    //the response object will contain a string with a rendered html of login page 
    //which contains a div with a class "login" 
    ... 

回答に「ログイン」クラスのdivが含まれているかどうかを確認するにはどうすればよいですか?私はそれを行う場合は、必要に応じて、私はそれからちょうど

window.location.href= "login.asp"; 

か、単に

window.location.reload(); 

を置くことができます。

+0

何 'のように見えるresponse'んか?それは有効なマークアップですか? – gurvinder372

答えて

3

あなたがそうのようなfindを使用することができます。

var result = $(response).find('div.login'); 

if(result.length > 0) { 
    //It does contain 
} 
else { 
    //Does not contain 
} 

Hereはあなたが単にjQueryオブジェクトを作成し、その応答オブジェクトの検索を行うことができます検索ドキュメント

0

です。

$.ajax({ 
    type: 'GET', 
    url: someURL, 
    success: function(response) { 
    //the response object contains a string with a rendered html of login page 
    //which contains a div with a class "login" 
    var $page = $(response); 
    if ($page.find("div.login").length > 0) { 
     //Redirect to the login page 
     window.location.href = "login.asp"; 
    } else { 
     window.location.reload(); 
    } 
    } 
}); 
0

(未テスト)正規表現使用して発生したことを検索します。

if (/<div[^>]+?class\s*=\s*"login/.test(response))… 
関連する問題