我想通過單獨的AJAX調用使用Codeigniter編寫的同一控制器中調用不同的方法,並在其中一個調用中創建第三個庫的對象,並稍後訪問同一個對象(也自動加載Session庫)在第二個方法,同時使第二AJAX調用:在Codeigniter中通過ajax調用對象引用
JavaScript有2個獨立的AJAX調用:
$.post('http://mysite.com/UserController/controllerA',{Param1:x,Param2:y});
$.post('http://mysite.com/UserController/controllerB');
而且控制器的樣子:
require_once 'FILEPATH/Thirdlibrary.php';
class UserController extends CI_Controller {
protected $service;
public controllerA{
$varA = $this->input->post('Param1');
$varB = $this->input->post('Param2');
$this->service = new ThirdLibray($varA,$varB);
$this->service->startCall();//Thirdlibrary has method startCall() and stopCall
}
public controllerB{
//I want to refer to the same object $this->service here
$this->service->stopCall();
}
現在我知道,PHP每次重新初始化的對象其加載/訪問,我怎麼能做出這樣work.How到ovecome這樣的錯誤:
Call to a member function stopCall() on a non-object
(使所有的努力後,搜索查詢這裏編碼)
如何使用'flashdata'或'sessions' – tomexsans
把'$ this-> service = new ThirdLibray($ varA,$ varB);'in'__construct()'需要注意的一點是, '$ varA'和'$ varB'。不考慮上下文,提供解決方案並不容易。 – itachi
itachi放置'$ this-> service = new ThirdLibray($ varA,$ varB);'__construct()'中的問題是,每次當您在codeigniter中通過AJAX調用控制器方法時,構造函數都會獲取調用並最終創建一個新對象'$ this-> service = new ThirdLibray($ varA,$ varB);'每次。我早些時候嘗試過。 – AmateurP