2014-02-11 45 views
1

我使用codeigniter和nodejs實時通知。現在我只想讓用戶通知頁面(控制器)上發生的最近更改。Codeigniter如何在控制器內使用jquery

因此,我使用socketio和nodejs來實現通知系統。該代碼是這樣的:

var socket = io.connect('http://localhost:5000'); 

$("#messageForm").submit(function() { 
    var nameVal = $("input[name=nameInput]").val(); 
    var msg = $("input[name=messageInput]").val(); 
    socket.emit('message', { name: nameVal, message: msg }); //LN1 
    alert('posted'); //Sent from client side 
    return false; 
}); 

//Receive the notification as soon as posted(for now, will get the same values posted above) 
    socket.on('message', function(data) { 
     alert('got response'); 
     var actualContent = $("#messages").html(); 
     var newMsgContent = '<li> <strong>' + data.name + '</strong> : ' + data.message + '</li>'; 
     var content = newMsgContent + actualContent; 
     $("#messages").html(content); 
    }); 

我也不過想要將更改保存到形式,所以我張貼的形式值控制器,將其保存到數據庫中。之後,我希望這個代碼運行。

所以,我覺得如果我能得到它在某種程度上是這樣,這將是更好的:

Class Myclass extends CI_Controller 
{ 
//....contructors etc. 

public function save_form() 
{ 
    $name = $this->input->post('nameInput'); 
    $msg = $this->input->post('messageInput'); 
    $this->load->model('my_model'); //For saving to database 
    $saved = $this->my_model->save($name, $msg); //returns true is saved 

    if($saved) 
    { 
     //Now notify user 
     //Please now tell me how to call the socketio javascript from here 
    } 
    redirect('form_url'); //Redirect back to form, from where is was submitted 
} 

//....other functions 
} 
} 

那麼有誰能夠告訴我如何從控制器中調用JavaScript?這是一個好主意嗎?其實我可以用這種方式從ajax調用控制器,然後使用$.ajax.done(function(){ socket.emit('message', { name: nameVal, message: msg }); },但是它太遲了,無法完成ajax調用。

預先感謝

回答

0

創建視圖文件Socket.php

類MYCLASS延伸是CI_Controller { 函數__construct() { 父:: __構建體(); $ this-> load-> helper('url'); $ this-> load-> helper('html'); }

public function save_form() 
    { 
    $name = $this->input->post('nameInput'); 
    $msg = $this->input->post('messageInput'); 
    $this->load->model('my_model'); //For saving to database 
    $saved = $this->my_model->save($name, $msg); //returns true is saved 

    if($saved) 
    { 
     $this->load->view('Socket.php'); 
    } 
    redirect('form_url'); //Redirect back to form, from where is was submitted 
    } 

}

相關問題