Ajax函数在CodeIgniter中不起作用

时间:2014-01-15 11:53:06

标签: javascript jquery codeigniter

我的页面中有一个按钮,当我点击此按钮时,它会将我重定向到此链接readMessage/id

我希望当我点击它以保持同一页面时,我不希望我的页面被重新加载或其他。

链接readMessage/id将更新数据库,这是控制器中的一个功能:

function readMessage($id) {
            $this->message_module->readMessage($id);
            $this->index();
      }

此函数将调用readMessage模块中的message函数:

function readMessage($id) {

        $data = array('is_read' => 1);

        $this->db->where('id',(int)$id)
                ->update($_tbl_msg, $data);
  }

这是我的按钮:

<button class="testButton" data-id="<?php echo $message->id; ?>">Test</button>

这是我试过的代码:

$('.testButton').click(function(){

                // get jquery object access to the button
                var $thisButton = $(this);

                var form_data = {
                    id : $thisButton.data('id')
                }

                $.ajax({
                   url:'<?php echo base_url;?>messages/readMessage',
                   type:'GET',
                   data: form_data,
                   success:function(d){
                       alert(d);
                   }
                });

            });

但它不起作用。

如果有人能告诉我该怎么做,我会很感激。

编辑1:

我更改了ajax代码,它工作了我现在可以看到success attribut中的警告框:

$('.testButton').click(function(){

                $.ajax({
                   url:"<?php echo site_url('messages/readMessage'); ?>",
                   type:'GET',
                   data: {id : $(this).data('id')},
                   success:function(d){
                       alert(d);
                   }
                });

            });

我认为之后的网址为:messages/readMessage?id=myId,但在CodeIgniter中应该是:messages/readMessage/myId,这就是它无效的原因。

我通过手动提供id进行了测试:

url:"<?php echo site_url('messages/readMessage/5'); ?>"

它有效。

现在我需要知道如何使用$(this).data('id')将该值url连接起来,因为当我尝试这个时:url:"<?php echo site_url('messages/readMessage/" + $(this).data('id') + "'); ?>",它没有用。

2 个答案:

答案 0 :(得分:1)

在你的控制器里 尝试回声

function readMessage() {
  $id=$this->input->get('id');
        $this->message_module->readMessage($id);
        $this->index();
    echo "something";
  }

答案 1 :(得分:1)

根据您最近的修改,请尝试以下网址中的代码

url:"<?php echo site_url('messages/readMessage'); ?>/"+$(this).data('id'),

然后您的readMessage应接受以下参数

function readMessage($data ="") {