【问题标题】:How to call a models database query in a javascript function in a view?如何在视图中的 javascript 函数中调用模型数据库查询?
【发布时间】:2011-06-11 05:56:11
【问题描述】:

在我的用户消息系统的用户收件箱中,我正在构建一个功能,用户可以在其中将电子邮件消息设为最喜欢的消息。

我在消息模型中创建了 2 个方法。一个更新 'messages' 表中的 0,将 'favourite' 列更新为 1,这意味着用户希望该消息成为最喜欢的。用户单击以使消息成为收藏夹的图像也会从灰色变为彩色。

然后,如果用户想让消息不受欢迎,我会再次执行相同的过程。 1 更新为 0,图像再次变灰。

下面是我的 jquery/javascript,如果选中该框(图像为彩色),则它基本上会执行某些操作,如果未选中该框(图像变灰),则会执行其他操作。

// favourite check box
    $('input.favourite:checkbox').simpleImageCheck({
  image: '<?php echo base_url()?>images/messages/check.png',
  imageChecked: '<?php echo base_url()?>images/messages/unchecked.png',
  afterCheck: function(isChecked) {
    if (isChecked) {
  //query to db from php to update favourite number to 1
    }
    else (!isChecked)
        {
            //query to db from php to update favourite number to 0
        }
  }
});

我想弄清楚的是在我的模型中调用我的 2 db 查询的最佳方法:

public function favourite_checked($message_id)
{
    $username = $this->session->userdata('username');
    return $this->db->query("UPDATE messages SET favourite = 1 WHERE id = $message_id AND to_user = '$username'");    
}

    public function favourite_unchecked($message_id)
{
    $username = $this->session->userdata('username');
    return $this->db->query("UPDATE messages SET favourite = 0 WHERE id = $message_id AND to_user = '$username'");    
}

最好的方法是什么?直接在视图中调用模型是不好的做法,不是吗?

那么我怎样才能实现我想要实现的目标呢?

控制器可以充当中间人吗?

如果是这样,我什至如何在 javascript 函数中调用控制器?

我一直很欣赏这里给出的建议。提前致谢

【问题讨论】:

    标签: php jquery codeigniter database-abstraction


    【解决方案1】:

    在 jQuery 中,您将使用 Ajax 获取请求到 CodeIgniter 控制器。假设您的控制器称为用户,您的函数称为 update_favorites。 jQuery 调用可能如下所示:

    $.get('http://mysite.com/users/update_favorites/user_id/message_id');
    

    然后,您的控制器将找到 user_id 和 message_id 的 URL 参数,并使用这些参数加载您的模型。该模型将对数据库进行更改。

    祝你好运!

    【讨论】:

      【解决方案2】:

      除了 Summer 的 $.get 方法之外,您还可以以几乎相同的方式使用 jQuery 的 $.post() 方法。我喜欢用 发布更好,因为 Codeigniter 被编写为支持发布请求而不是获取请求。

      【讨论】:

        猜你喜欢
        • 2014-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-31
        • 1970-01-01
        • 2014-03-06
        • 2013-04-26
        • 1970-01-01
        相关资源
        最近更新 更多