2010-12-13 2 views
0

Я хотел бы добавить простую функциональность для своих страниц, где пользователь увидит кнопку «follow», и щелкнув по ней, будет создана запись db (идентификатор пользователя и pageID). Полагаю, я обработаю запрос на бэкэнд. Я думаю, мне нужно сделать это в AJAX, но я не много сделал с AJAX. Я также думал, что обновление статуса кнопки из FOLLOW в FOLLOWING (или что-то подобное) я мог бы сделать с jQuery с каким-то переключением, в то время как запрос обрабатывается на фоне.Нужно добавить функцию

Я нахожусь на правильном пути с этим?

+0

Звучит отлично. Единственное, что я улучшил, это то, что вы не должны изменять «FOLLOW» на «FOLLOWING», пока не получите подтверждение от вашего запроса AJAX о том, что база данных была должным образом обновлена. Вы можете просто показать вращатель, пока он обрабатывает. Кроме этого, это звучит довольно просто. Нужна ли вам какая-либо помощь в ее реализации, или это вопрос «Я на правильном пути»? – AgentConundrum

ответ

2

Вы на правильном пути.

Я создал пример, который использует кнопку типа <input type="image" class="follow">. Когда я нажимаю на него, он отправляет запрос на сервер (url). При успехе он обновляет изображение кнопки.

$('input[type=image].follow').click(function() { 
    var button = $(this); 
    var current_img = $(button).attr('src'); 
    var current_alt = $(button).attr('alt'); 

    $(button).attr('src', '/style/icons/ajax-loader.gif'); 
    $(button).attr('alt', 'Requesting data from the server...'); 

    $.ajax({ 
     url: url of script the processes stuff (like db update), 
     type: 'POST', 
     data: {}, 
     dataType: "json", 
     error: function(req, resulttype, exc) 
     { 
     $(button).attr('src', '/style/error.png'); 
     $(button).attr('alt', 'Error while updating!'); 
     window.setTimeout(function() { 
      $(button).attr('src', current_img); 
      $(button).attr('alt', current_alt); 
     }, 3000); 
     }, 
     success: function(data) 
     { 
     $(button).attr('src', '/style/followed.png'); 
     $(button).attr('alt', 'Followed'); 
     } 
    }); 

    return false; 
    }); 

Выше приведен пример кода. Измените его по своему желанию. Получайте удовольствие от этого.

+0

Прохладный, спасибо за пример. Как передать несколько переменных на страницу php, которая будет обрабатывать запрос? Будет ли это URL: mypage.php? Var1 = a & var2 = b или в данных: {}? Благодарю. – santa

+0

Я нахожу его «чище», чтобы добавить вары к данным, поскольку они будут использовать POST вместо GET. Но это может быть только я :) – PeeHaa

+0

Я использую класс, который кодирует URL-адрес, поэтому мои вары будут безопасны для передачи по URL-адресу, но я вижу вашу точку зрения и, вероятно, буду использовать POST в этом случае. Мне все еще нужно выяснить, как передавать данные. Я просто создаю тестовую страницу и поэкспериментирую с этим. Еще раз спасибо за отличный пример. – santa

1

AJAX прав, jQuery делает ajax легким.

//Post with jQuery (call test.php): 
$.post('test.php', function(data) { 
    //Do something with result data 
}); 
0

Звучит так, как будто вы на правильном пути здесь. Если вы работаете с меньшим приложением, то использование запроса AJAX и создание вашей записи было бы проще всего с помощью сервлета Java и, например, привести некоторый код JDBC в ваш метод doGet или doPost для выполнения операций с базой данных. В то же время ваш метод onSuccess для вашего запроса AJAX может вызвать код jQuery, необходимый для обновления вашей кнопки. Удачи!

Смежные вопросы