调用javascript函数内的控制器

时间:2011-01-18 23:22:58

标签: php javascript jquery mysql codeigniter

我有一个控制器:消息 该控制器中的方法:favourite_checked() 一个变量,用于存储我的数据库中的messages表中的messages_id

生成此网址

mysite.com/messages/favourite_checked/1 mysite.com/controller/method/message_id

成功调用此URL后,它会连接到我的模型并更新名为“favorite”的消息表中的列。该列中的0更新为1.

0 =未选中框(不是最喜欢的收件箱信息) - 灰显图像 1 =已装箱(用户选择的特定消息为收藏消息) - 彩色图像

无论如何我需要在我的javascript中将这个URL加载到我的(缺失)函数中。 问题是它还需要加载正在被点击的特定行的正确message_id。

message_id = id ...来自我的消息表,以便从数据库中获取并添加到URL的末尾,基本上是我的控制器方法存储在变量中并作为参数传递给模型在模型中的sql查询中使用,以确保更新数据库中的正确行。

在下面的代码中,我为我的邮件收件箱链接做了同样的事情。效果很好。

 <?php foreach ($query as $row):  ?>
  <tr>
    <?php switch($row['status']){
        case 0: $status = "unread"; break;            
        case 1: $status = "read"; break;
        case 2: $status = "replied"; break;
        case 3: $status = "fav"; break;
        default: $status = '';           
    }?>

    <td width="5%"><input name="message" id="messages" type="checkbox" value="" class="<?php echo $status; ?>"/></td>
    <td width="5%"><input name="sunny" id="" type="checkbox" value="" class="favourite" checked="checked" /></td>
    <td><?php echo $status; ?></td>
    <td><?php echo $row['from_user']; ?></td>
    <td><div id="test"><a href="<?php echo site_url("messages/read_message/".$row['id']); ?>"><?php echo $row['subject'] . " " . $row['message']; ?></a></a></div></td>
    <td><?php if ($row['date_sent'] == date('Y-m-d')) { echo $row['time_sent']; } else echo $row['date_sent']; ?></td>
  </tr>
<?php endforeach; ?> 

我只需要在选中框之后如何使用从数据库加载中获取的ID获取上面的URL,以便查询可以运行并更新数据库中的特定列

并在再次取消选中此框时执行相同的操作。

我还需要在javascript函数中使用foreach循环,因为收件箱中的每条消息都需要提供,以便它们能够使消息成为最喜欢的消息。

这是我的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
  $.post('');

    }
//    else (!isChecked)
//        {
//            //query to db from php to update favourite number to 0
//              $.post('');
//        }
  }
});

提前感谢您的支持。

1 个答案:

答案 0 :(得分:1)

您可以在html中将消息ID另存为data attribute。如,

<tr data-message-id="<?php echo $id_goes_here; ?>">

而非简单

<tr>

然后,在您的事件处理程序中,您可以像这样获取消息ID

$(this).closest('tr').attr('data-message-id')

我假设this指向单击的元素(或该行内的任何DOM元素)

PS使用最新的jquery版本(我认为是1.4.4),您也可以将.attr('data-message-id')替换为.data('message-id')