2015-01-21 58 views
0

我正在開發CI框架,我需要在控制器中持續運行一個文件來檢查數據庫中的數據。 我已經嘗試通過在PHP中每2秒刷新頁面。但它似乎不是最好的方法來做到這一點每2秒加載整個頁面。所以我試圖通過ajax調用來運行該文件。 通常在PHP中,我可以連續運行文件。我在這個框架中嘗試了相同的,但我得到一些錯誤,如致命錯誤:類'CI_Controller'在系統/ expressionengine/controllers/popup.php找不到,因爲控制器中的類。 有沒有辦法通過AJAX調用連續在控制器中運行文件。如何在CodeIgniter框架中連續運行控制器中的文件

這裏是我的代碼

<?php 
 
class Popup extends CI_Controller 
 
{ 
 
\t public function __construct() 
 
\t { 
 
\t \t parent::__construct(); 
 
\t \t $this->load->model('popup_model'); 
 
\t } 
 
\t public function popup1() 
 
\t { 
 
\t \t $page = $_SERVER['PHP_SELF']; 
 
\t \t $sec = "2"; 
 
\t \t header("Refresh: $sec; url=$page"); 
 
\t \t $data['popup'] = $this->popup_model->get_events(); 
 
\t \t $data['title'] = 'Pop Up'; 
 
\t \t if (empty($data['popup'])) 
 
\t \t { 
 
\t \t \t 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t $this->load->view('popup/popup1',$data); 
 
\t \t \t $this->load->view('popup/eve',$data); 
 
\t \t } 
 
} 
 

 
}

+0

你試圖在你的ajax調用中訪問什麼'URL? – 2015-01-21 05:52:08

+0

這裏我打電話是這樣的 var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function(){if(xmlhttp.readyState == 4 && xmlhttp.status == 200){document.getElementById(「txtHint」)。innerHTML = xmlhttp.responseText; } } xmlhttp.open(「GET」,「popup.php」,true); xmlhttp.send(); setTimeout(showHint,1000); – 2015-01-21 06:22:08

+0

使用'jquery ajax'這是很容易做到這一點,你想在popup.php做什麼?你應該創建控制器和視圖,但首先用popup.php代碼更新你的問題。 – 2015-01-21 06:26:48

回答

2

寫Ajax調用到一個功能和文件準備通,其功能是JavaScript函數setInterval(functionname, interval_delay);

0

每2秒一個AJAX調用不好,可能會因請求過多而使服務器過載。還有其他的選擇,如PHPWebsockets和NodeJS來實現這一點。

+0

我對PHPWebsockets和NodeJS沒有任何意見。你能爲我提供任何示例嗎? – 2015-01-21 07:01:26

+0

是的當然 您可以使用以下鏈接。 http://www.phpbuilder.com/articles/application-architecture/optimization/creating-real-time-applications-with-php-and-websockets.html https://code.google.com/p/phpwebsocket 以下鏈接已經習慣了學習nodejs和phpwebsockets。這在開始時可能會非常棘手,但在當前情況下非常有效 – pbdabholkar 2015-01-22 07:48:59

相關問題