Обновление базы данных AJAX с изменением цвета кнопки CSS с использованием Codeigniter - PullRequest
0 голосов
/ 19 декабря 2011

Я видел здесь хорошие посты с кусочками того, что я пытаюсь сделать, но ничего со всеми областями не затронуто.У кого-нибудь есть примеры кода или советы, которые помогут мне сделать то, что я пытаюсь сделать?

Во-первых, я построю свое представление MVC с массивом данных, таких как (имя организации, идентификатор, состояние), где состояние - это логическое значение, выбранное или не выбранное.Однако вместо того, чтобы показывать простой флажок, я бы хотел отобразить конкретный показ зеленой (выбранной) или красной (не выбранной) кнопки в зависимости от состояния значения базы данных.CSS не проблема.

Тогда, если и когда пользователь нажмет кнопку, я бы хотел изменить значение div с красного на зеленый (или наоборот), но также обновить логическое значение в базе данных.поле через вызов AJAX.Было бы предпочтительнее использовать JQuery, где это возможно.

Наконец, мне нужно знать, как сделать все это с помощью CodeIgniter.Я хорошо разбираюсь в CI, но на данный момент я новичок в Javascript / JQuery в свете фар.Может ли кто-нибудь указать мне правильное направление или предложить веб-сайт с примером кода, близким к тому, что я пытаюсь сделать, или хороший ресурс, отличный от очевидного?Спасибо, любезно.

Ответы [ 2 ]

3 голосов
/ 19 декабря 2011

ОК, поэтому CodeIgniter - это фреймворк PHP - это означает, что он работает на стороне сервера. (Я знаю, там есть библиотека ajax, но я этим не пользуюсь.) Мы должны понимать разницу между серверной и клиентской сторонами. Ваш JavaScript-код на стороне клиента. Я обычно разрабатываю все без javascript для начала в codeigniter, затем возвращаюсь и добавляю биты javascript. Это помогает мне убедиться, что система работает для тех, у кого не включен javascript или по какой-либо причине невозможно выполнить javascript. (Кстати, это называется прогрессивное улучшение ).

Итак, во-первых, давайте позаботимся о не-JavaScript-версии: Вам просто нужно дать вашей красной / зеленой кнопке URL при нажатии, который указывает на метод контроллера, который обновит запись базы данных и перенаправит вас обратно на страницу, на которой вы были ранее (на которой есть красные / зеленые кнопки).

/ controller / method.html - наш метод контроллера, который будет сохранять в базу данных и перенаправлять обратно на эту страницу. ->

<a href="/controller/method.html" class="red my-button">Check</a>

Теперь давайте позаботимся о версии js:

по вашему мнению, вам просто нужно перехватить щелчок, отправить запрос ajax и изменить красную / зеленую кнопку в зависимости от результата метода контроллера. Итак, мы не даем ссылку перенаправить страницу на атрибут href (e.prevendDefault ()). Затем мы получаем значение href и выполняем ajax-вызов этого метода контроллера. Метод определит, является ли это ajax-запросом, и сохранит его в базе данных, а затем вернет сообщение «success». На success мы можем обновить визуальный компонент на стороне клиента.

$('.my-button').live('click', function(e) {
    e.preventDefault();
    $.ajax({
        // $(this).attr('href') gets the value of the links href attribute 
        // which is "/controller/method.html" in this case
        url: $(this).attr('href'), 
        success: function(data) {
           // update your button with whatever html to write the new button
           $('.my-button').replaceWith('<a href="/controller/method.html" class="red my-button">Check</a>');
        }
    });
});

Ваш метод контроллера просто проверяет, является ли это ajax-запросом или нет. Если это так, просто возвращает успех, если не перенаправляет страницу.

function my_controller_method()
{
    if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
        $_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest") {

        // update your database
        echo "success";
    }else{
        // redirect back to page
        redirect($_SERVER[‘HTTP_REFERER’]);
    } 
}
0 голосов
/ 19 декабря 2011

То, что вы хотите, это что-то вроде большого пальца вверх / как вещь ... есть ссылка, включенная в демоверсию http://www.geertdedeckere.be/lab/themeforest/thumbsup/demo/

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