使用jQuery $ .post()向控制器发布数据,无法在控制器CodeIgniter中获取post值

时间:2015-03-26 09:18:04

标签: jquery model-view-controller codeigniter-2

我使用下面显示的jQuery $ .post()发布到我的控制器:

var data = {

    user_id : $('#users-area [data-toggle="dropdown"]').attr('data-id'),
    message : $('[data-form="send_notification"] [data-input="message-textarea"]:last').val()

};

console.log(data.user_id);
console.log(data.message);

$.post(URL+'notifications/send_notification', data, function(e){

    if(e.status){

            $('body').append('<div class="success_box"><span class="glyphicon glyphicon-thumbs-up"></span><p>Notification sent</p></div>');
            $('.success_box').delay(1200).fadeOut();
            window.location = window.location.href;

        } else {

                //alert('Uh oh! Something went wrong, please try again..');

        }

});

在我的控制器中我只是:

public function send_notification(){

    //die('msg: '.$this->input->post('message'));
    die('uid: '.$this->input->post('user_id'));

}

这是表格的代码:

<div id="send_message" class="lightbox">

<h3>Send Notification</h3>

<?php echo form_open('notifications/send_notification', 'data-form="send_notification"'); ?>

    <label for="to-user">To </label>
    <div id="users-area" class="btn-group dropdown"><button data-users="users" type="button" class="btn btn-default">Select a user</button><button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><span class="caret"></span><span class="sr-only">Toggle Dropdown</span></button>
        <ul data-dropper="user-dropdown" id="user-drop" class="dropdown-menu" role="menu">
            <li><a data-id="0" href="#">All Users</a></li>
        </ul></div>
    <br>
    <label for="message">Message </label><br>
    <textarea value="" data-input="message-textarea" id="message"></textarea>
    <br>
    <p><?php echo form_submit('', 'Send', 'class="btn btn-primary"'); ?></p>

        <?php echo form_close(); ?>

</form>

结果是我没有得到任何消息或user_id的值......根本没有...

请帮忙!

1 个答案:

答案 0 :(得分:0)

问题是我在jQuery中使用表单$ .post()函数后没有返回false,这导致表单被推送,因此页面被刷新,因此刷新后没有post值。见下文:

var data = {

    user_id : $('#users-area [data-toggle="dropdown"]').attr('data-id'),
    message : $('[data-form="send_notification"] [data-input="message-textarea"]:last').val()

};

console.log(data.user_id);
console.log(data.message);

$.post(URL+'notifications/send_notification', data, function(e){

    if(e.status){

        $('body').append('<div class="success_box"><span class="glyphicon glyphicon-thumbs-up"></span><p>Notification sent</p></div>');
        $('.success_box').delay(1200).fadeOut();
        window.location = window.location.href;

    } else {

        //alert('Uh oh! Something went wrong, please try again..');

    }
});
return false;

谢谢!