I am trying to make a very simple php chat for my website with CodeIgniter and Ajax. The messages are saved in a html file, not in a database table. Whenever I click the send button, the page refreshes, even though it's not supossed to and I don't know what's wrong. Here is my code: My controller code:
class Chat_con extends CI_Controller{
function construct(){
parent::_construct();
}
public function index(){
$this->load->model('login_model');
$d['info']=$this->login_model->display_user_data();//this info is sent to view to display the username of the person who is using the chat
$d['message']=$this->read_conv();
$this->load->view('chat_view',$d);
}
function write_conv() {
$this->load->helper('directory');
$this->load->helper('url');
$this->load->helper('file');
$this->path = "application" . DIRECTORY_SEPARATOR . "files"
. DIRECTORY_SEPARATOR;
$this->file = $this->path . "log.html";
$m=$this->input->post('usermsg');
$u=$this->session->userdata('username');
write_file($this->file,"<div class='msgln'>(".date("g:i A").") <b>".$u."</b>: ".stripslashes(htmlspecialchars($m))."<br></div>",'a');
$this->index();
}
function read_conv(){
$this->load->helper('directory');
$this->load->helper('url');
$this->load->helper('file');
$this->path = "application" . DIRECTORY_SEPARATOR . "files"
. DIRECTORY_SEPARATOR;
$this->file = $this->path . "log.html";
$string = read_file($this->file);
return $string;
}
}
Part of my view:
<div id="chatbox">//this is the div where the messages are displayed
<?php echo $message; ?></div>
//this is the form
<form name="message" id="message"action="<?php echo base_url();?
>chat_con/write_conv" method='post'>
<input name="usermsg" type="text" id="usermsg" size="63" /> <input
name="submitmsg" type="submit" id="submitmsg" value="Send" />
</form>
//The script
<script type="text/javascript">
$(document).ready(function() {
$("#message").submit(function(e) {
e.preventDefault();
var postData = $(#message).serializeArray();
var formActionURL = $(this).attr("action");
$.ajax({
url: formActionURL,
type: "POST",
data: postData,
}).done(function(data) {
alert("success");
}).fail(function() {
alert("error");
}).always(function() {
$("#submitmsg").val('submit');
});
});
}
</script>