2012-10-09 61 views
1

我用我的CakePHP應用程序頻繁JQuery的Ajax調用(後,加載)。通常將內容加載到div的,且內容與誰是登錄的用戶相關在CakePHP中失去驗證會話JQuery的Ajax調用

我使用默認形式的認證,並定義登錄的用戶在AppController中:

$this->aU = $this->User->findById($this->Auth->user('id')); 

這個我後通常使用$ this-> aU在控制器中登錄的用戶,並且在普通視圖渲染中工作正常。 但是,當我使用ajax和setinterval渲染視圖時,20次中有1次失敗,並且控制器重定向請求,因爲看不到登錄的用戶。

var interval = setInterval(function() { 
    $('#alerts').load('<?php echo $this->Html->url('/users/alerts'); ?>'); 
}, 20000); 

在UsersController提醒我用這個動作:

public function alerts() { 
    $this->layout = 'ajax'; 
    $user = $this->aU; 
    $this->loadModel('Message'); 
    $unread_messages = $this->Message->find('count', array(
    'conditions' => array('receiver_user_id' => $user['User']['id']) 
)); 
    $this->set(compact('user', 'unread_messages')); 
} 

也許我用錯邏輯用戶識別?

回答

0

測試你的功能Ajax調用

public function alerts() {  
    if($this->request->is('ajax')){ //or $this->RequestHandler->isAjax() if you're in cake 1.3 
     $this->layout = 'ajax'; 
     $user = $this->aU; 
     $this->loadModel('Message'); 
     $unread_messages = $this->Message->find('count', array(
     'conditions' => array('receiver_user_id' => $user['User']['id']) 
     )); 
     $this->set(compact('user', 'unread_messages'));  
    } 
} 
+0

希律喜的是更加穩定調用這個樣子?我之前嘗試過,我已經看到它是一樣的。 – paltamas

+0

嘗試調試$ this-> Auth-> user('User.id')和$ this-> Auth-> user('id'),看看返回的值是什麼。一個應該沒問題一個應該是空的我猜 –

+0

我現在再試一次,只有$ this-> Auth-> user('id')很好。看來這個Auth用戶數組「有時」是空的。 20次中的1次。 – paltamas