2017-04-18 14 views
0

私はcodeigniterフレームワークで開発されたWebアプリケーションを持っています。ajaxコールでセッションが終了したときにログインページを表示しないようにします

私の問題は、バックエンドでセッションが期限切れになった場合、バックグラウンドでたくさんのajaxコールが発生し、ダイナミックデータをロードする場所にログインページが表示されることです。

すべてのajaxコールを変更せずにこの問題を解決するにはどうすればよいですか?サーバ側では、このための簡単な解決策、

があるので

+0

:ここで私は、データ型を使用していますAjaxコードを投稿できますか? – Gntem

+0

セッションの有効期限が切れている場合、Webアプリケーションでは通常のログインページが表示されます。今、「動的データ」とはどういう意味ですか? –

+0

@ Mr.Phoenix私は自分のajaxコードを追加しました。 – user7573053

答えて

0
$.ajax({ 
    url: "<?= base_url("controller/method") ?>", 
    data: {key1: value1,key2: value2}, 
    type: "POST", 
    dataType: "HTML" 
    success: function(){ 
     // here i'm processing the response. 
    } 
}); 

オクラホマ。

if($_SESSION['loggedin']=='false') //assuming the login check 
    header('app-stat : loggedout') //send custom header to client 

ここで、クライアント側では、ajax呼び出しでヘッダーをチェックします。

成功関数は次のようになります。

success: function(data, textStatus, request){ 
    if(request.getResponseHeader('app-stat')=='loggedout') 
    { 
      //do what ever you want 
    } 
    else{ 
      //enjoy 
    } 
}, 

Ok、既に追加されている500のajaxソリューションです。

$(document).ajaxSuccess(function() { 
    //I think now you know what to do 
}); 
+0

このソリューションは問題ありませんが、私はすべての私のajax呼び出しでこれを変更しなければなりません(私は500以上のajax呼び出しをバックエンドを通して呼び出しています)。 – user7573053

+0

解決策を追加してください。 –

+0

私はこれらの成功したエラーが好きではありません。それはHTTPエラーコードのためのものです。 – apokryfos

0
あなたのコントローラで

class Controller_name extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $user_id = $this->session->userdata('user_id'); // Session id of user 
     if(!$user_id || $user_id == '') 
     { 
      if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 
      { // Checking if ajax request received or not 

       echo json_encode(array('status' => FALSE,'msg' => 'You are not logged in')); 
       die; 
      } 

     } 
    } 
} 

そして、あなたのAJAXリクエストで

$.ajax({ 
    url: "<?= base_url("controller/method") ?>", 
    data: {key1: value1,key2: value2}, 
    type: "POST", 
    dataType: "json" 
    success: function(resp){ 
     if(resp.status == false) 
     { 
     alert(resp.msg); 
     } 
    } 
}); 

注:「AJAXリクエストでJSON

関連する問題