首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >codeigniter聊天框不工作

codeigniter聊天框不工作
EN

Stack Overflow用户
提问于 2015-10-01 19:16:57
回答 1查看 473关注 0票数 0

我正在用codeigniter制作一个聊天框,但在输入名称和消息后,弹出的对话框显示‘禁止’。

我真的搞不懂我在这里放了什么函数(chatbox.php‘) $.post(' shout.php ',load_data,shout.php(Data){

我用http://localhost/myfoldername/application/views/shout.php代替了'shout.php‘

我的控制器money_c

代码语言:javascript
复制
function chat(){

    $this->load->view('chatbox');
}

chatbox.php

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Chat Box</title>
<style type="text/css">
<!--
.shout_box {
    background: #627BAE;
    width: 260px;
    overflow: hidden;
    position: fixed;
    bottom: 0;
    right: 20%;
    z-index:9;
}
.shout_box .header .close_btn {
    background: url(images/close_btn.png) no-repeat 0px 0px;
    float: right;
    width: 15px;
    height: 15px;
}
.shout_box .header .close_btn:hover {
    background: url(images/close_btn.png) no-repeat 0px -16px;
}

.shout_box .header .open_btn {
    background: url(images/close_btn.png) no-repeat 0px -32px;
    float: right;
    width: 15px;
    height: 15px;
}
.shout_box .header .open_btn:hover {
    background: url(images/close_btn.png) no-repeat 0px -48px;
}
.shout_box .header{
    padding: 5px 3px 5px 5px;
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif;
    font-weight: bold;
    color:#fff;
    border: 1px solid rgba(0, 39, 121, .76);
    border-bottom:none;
    cursor: pointer;
}
.shout_box .header:hover{
    background-color: #627BAE;
}
.shout_box .message_box {
    background: #FFFFFF;
    height: 200px;
    overflow:auto;
    border: 1px solid #CCC;
}
.shout_msg{
    margin-bottom: 10px;
    display: block;
    border-bottom: 1px solid #F3F3F3;
    padding: 0px 5px 5px 5px;
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif;
    color:#7C7C7C;
}
.message_box:last-child {
    border-bottom:none;
}
time{
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif;
    font-weight: normal;
    float:right;
    color: #D5D5D5;
}
.shout_msg .username{
    margin-bottom: 10px;
    margin-top: 10px;
}
.user_info input {
    width: 98%;
    height: 25px;
    border: 1px solid #CCC;
    border-top: none;
    padding: 3px 0px 0px 3px;
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif;
}
.shout_msg .username{
    font-weight: bold;
    display: block;
}
-->
</style>

<script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery-1.9.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

    // load messages every 1000 milliseconds from server.
    load_data = {'fetch':1};
    window.setInterval(function(){
     $.post('shout.php', load_data,  function(data) {
        $('.message_box').html(data);
        var scrolltoh = $('.message_box')[0].scrollHeight;
        $('.message_box').scrollTop(scrolltoh);
     });
    }, 1000);

    //method to trigger when user hits enter key
    $("#shout_message").keypress(function(evt) {
        if(evt.which == 13) {
                var iusername = $('#shout_username').val();
                var imessage = $('#shout_message').val();
                post_data = {'username':iusername, 'message':imessage};

                //send data to "shout.php" using jQuery $.post()
                $.post('shout.php', post_data, function(data) {

                    //append data into messagebox with jQuery fade effect!
                    $(data).hide().appendTo('.message_box').fadeIn();

                    //keep scrolled to bottom of chat!
                    var scrolltoh = $('.message_box')[0].scrollHeight;
                    $('.message_box').scrollTop(scrolltoh);

                    //reset value of message box
                    $('#shout_message').val('');

                }).fail(function(err) { 

                //alert HTTP server error
                alert(err.statusText); 
                });
            }
    });

    //toggle hide/show shout box
    $(".close_btn").click(function (e) {
        //get CSS display state of .toggle_chat element
        var toggleState = $('.toggle_chat').css('display');

        //toggle show/hide chat box
        $('.toggle_chat').slideToggle();

        //use toggleState var to change close/open icon image
        if(toggleState == 'block')
        {
            $(".header div").attr('class', 'open_btn');
        }else{
            $(".header div").attr('class', 'close_btn');
        }


    });
});

</script>
</head>

<body>
<div class="shout_box">
<div class="header">chat box<div class="close_btn">&nbsp;</div></div>
  <div class="toggle_chat">
  <div class="message_box">
    </div>
    <div class="user_info">
    <input name="shout_username" id="shout_username" type="text" placeholder="Your Name" maxlength="15" />
   <input name="shout_message" id="shout_message" type="text" placeholder="Type Message Hit Enter" maxlength="100" /> 
    </div>
    </div>
</div>
</body>
</html>

shout.php

代码语言:javascript
复制
<?php
####### db config ##########
$db_username = 'root';
$db_password = '';
$db_name = 'money1';
$db_host = 'localhost';
####### db config end ##########

if($_POST)
{
    //connect to mysql db
    $sql_con = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');

    //check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
        die();
    } 

    if(isset($_POST["message"]) &&  strlen($_POST["message"])>0)
    {
        //sanitize user name and message received from chat box
        //You can replace username with registerd username, if only registered users are allowed.
        $username = filter_var(trim($_POST["username"]),FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
        $message = filter_var(trim($_POST["message"]),FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
        $user_ip = $_SERVER['REMOTE_ADDR'];


        //insert new message in db
        if(mysqli_query($sql_con,"INSERT INTO shout_box(user, message, ip_address) value('$username','$message','$user_ip')"))
        {
            $msg_time = date('h:i A M d',time()); // current time
            echo '<div class="shout_msg"><time>'.$msg_time.'</time><span class="username">'.$username.'</span><span class="message">'.$message.'</span></div>';
        }

        // delete all records except last 10, if you don't want to grow your db size!
        mysqli_query($sql_con,"DELETE FROM shout_box WHERE id NOT IN (SELECT * FROM (SELECT id FROM shout_box ORDER BY id DESC LIMIT 0, 10) as sb)");
    }
    elseif($_POST["fetch"]==1)
    {
        $results = mysqli_query($sql_con,"SELECT user, message, date_time FROM (select * from shout_box ORDER BY id DESC LIMIT 10) shout_box ORDER BY shout_box.id ASC");
        while($row = mysqli_fetch_array($results))
        {
            $msg_time = date('h:i A M d',strtotime($row["date_time"])); //message posted time
            echo '<div class="shout_msg"><time>'.$msg_time.'</time><span class="username">'.$row["user"].'</span> <span class="message">'.$row["message"].'</span></div>';
        }
    }
    else
    {
        header('HTTP/1.1 500 Are you kiddin me?');
        exit();
    }
}

但在输入名称和消息后,将弹出警告框,显示“禁止”。

EN

回答 1

Stack Overflow用户

发布于 2015-10-02 16:45:41

我不认为你完全掌握了MVC架构,这里也不是真正解释它的地方。

我建议你进一步研究它,但这里可能对你有用的是修改你的控制器函数如下:

代码语言:javascript
复制
function chat(){
    $this->load->view('chatbox');    
}

function shout(){
    $this->load->view('shout');
}

然后,您需要确保URL(路由)有效。

假设您当前的URL是www.mysite.com/someController/chat/

然后,新的URL将是www.mysite.com/someController/shout/

如果此URL不起作用,则需要整理您的路由才能使其起作用。

如果此网址有效,则需要从更新您的JQuery网址

代码语言:javascript
复制
.post('shout.php', load_data,  function(data) {

代码语言:javascript
复制
.post('/someController/shout/', load_data,  function(data) {

DR jquery post函数通过URL访问fule,就像真人一样。它不能直接加载文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32886228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档