2014-02-11 5 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 
    } 

}

Смежные вопросы