【问题标题】:Codeigniter how to use jquery within controllerCodeigniter如何在控制器中使用jquery
【发布时间】:2014-03-09 10:00:40
【问题描述】:

我将 codeigniter 和 nodejs 一起用于实时通知。现在我只想让用户通知页面(控制器)最近发生的变化。

因此,我使用 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调用一路抛出。

提前致谢

【问题讨论】:

    标签: php jquery node.js socket.io codeigniter-2


    【解决方案1】:

    创建视图文件Socket.php

    类 Myclass 扩展 CI_Controller { 函数 __construct() { 父::__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
       }
    

    }

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2019-01-16
      • 2015-09-13
      • 1970-01-01
      • 2015-01-17
      • 2014-04-05
      • 2010-11-11
      • 2020-07-22
      • 1970-01-01
      相关资源
      最近更新 更多