Вызов контроллера внутри функции JavaScript - PullRequest
0 голосов
/ 19 января 2011

У меня есть контроллер: сообщения метод в этом контроллере: favourite_checked () переменная, которая хранит messages_id из моей таблицы сообщений в моей базе данных

Этот URL создается

mysite.com / сообщений / favourite_checked / 1 mysite.com/controller/method/message_id

Когда этот URL-адрес успешно вызывается, он подключается к моей модели и обновляет столбец в моей таблице сообщений, называемый «любимым». 0 в этом столбце обновляется до 1.

0 = в штучной упаковке не отмечен (не является любимым входящим сообщением) - изображение серого цвета 1 = флажок отмечен (пользователь выбрал конкретное сообщение в качестве избранного) - Цветное изображение

В любом случае, мне нужно, чтобы этот URL был загружен в мою (проверенную) функцию в моем javascript. Проблема заключается в том, что он также должен загрузить правильный 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; ?> 

Мне просто нужно, чтобы вышеуказанный URL-адрес был получен из идентификатора, извлеченного из загрузки базы данных после того, как флажок установлен, чтобы запрос мог выполняться и обновлять определенный столбец в моей базе данных

и делать то же самое, когда флажок снова не установлен.

Мне также понадобился бы цикл foreach внутри функции javascript, поскольку каждое сообщение в их почтовом ящике необходимо было бы сделать доступным, чтобы они могли делать сообщения любимыми сообщениями.

Вот мой 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 Ответ

1 голос
/ 19 января 2011

Вы можете сохранить идентификатор сообщения как атрибут данных в html.Например,

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

вместо простого

<tr>

Затем в обработчике событий вы можете получить идентификатор сообщения, подобный этому

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

Я предполагаю this указывает на элемент, по которому щелкнули (или любой элемент DOM внутри этой строки)

PS В последней версии jquery (я думаю, 1.4.4) вы также можете заменить .attr('data-message-id') на .data('message-id').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...