[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Научите штудента Аяксу
panacea
Привет!
Ребят, научите как делается кнопочка с ajax запросом. Может поучительной ссылкой поделитесь?
Типа нужна подписка как на youtube. Нажал на нее - запросик в базу, сменили статус и выдали другую картинку уже желтенькую, нажав на которую можно отписаться. Короче стандартная текст. или графическая ссылка. Кстати, надо красивные картиночки подобрать для всех статусов (подписан или нет). Может у кого есть в закромах поделитесь. Высота не больше 10 пиксей. Может даже текстом в рамочке обрамить как нибудь...надо посмотреть...
В Гугле для закладок там звездочки потрясные. Вот типа подобное надо сделать, тока для подписки.
Я тут начал калякать запрос... вот что у меня выходит.
//-----------------------------------
//START AJAX SUBSCIBE
//-----------------------------------

function comRate( user, id_cat ) {
var ajax = new dle_ajax();
ajax.onShow ('');
var varsString = ""; // не знаю, что ей присвоить?
ajax.setVar("category", id_cat);
ajax.setVar("user", user);
ajax.requestFile = dle_root + "engine/ajax/subscibe.php";
ajax.method = 'POST';
ajax.element = 'mail-news-' + id_cat;
ajax.sendAJAX(varsString);
//Тут должон быть код для вывода нужной кликабельной картинки
};
//-----------------------------------
// END AJAX SUBSCIBE
//-----------------------------------




Спустя 2 часа, 19 минут, 3 секунды (12.04.2011 - 20:11) Stuff_f написал(а):
ошиблись не много разделами) вам сюда
http://phpforum.ru/index.php?showforum=28

Спустя 7 минут, 6 секунд (12.04.2011 - 20:18) Stuff_f написал(а):
и вообще наверное вам легче будет на JQuery осуществить задумку, на ajax вам будет сложнее, ну конечно если вы знаете хорошо ajax=(javascript+XML), т.к. jquery = (javascrip+css), можете сделать что угодно

Спустя 22 минуты, 28 секунд (12.04.2011 - 20:40) panacea написал(а):
За промох в теме икскузимуа, пардон, прошу прощения. тему модераторы перенесут. сим-саля-бим.
Ни аякс, ни jquery ни в зуб ногой. Помоги ссылочкой штуденту на проштудирование.

Спустя 4 минуты, 57 секунд (12.04.2011 - 20:45) alex12060 написал(а):
На ЖК проще будет в разы.
Почитай, много статей.

Спустя 2 минуты, 49 секунд (12.04.2011 - 20:48) Stuff_f написал(а):
Цитата (panacea @ 12.04.2011 - 17:40)
За промох в теме икскузимуа, пардон, прошу прощения. тему модераторы перенесут. сим-саля-бим.
Ни аякс, ни jquery ни в зуб ногой. Помоги ссылочкой штуденту на проштудирование.

Спустя 43 минуты, 15 секунд (12.04.2011 - 21:31) panacea написал(а):
Спасибо. Будем разбираться. Вещь нужная вещь в хозяйстве не пропадет.

Спустя 5 минут, 39 секунд (12.04.2011 - 21:37) Krevedko написал(а):
на торрентах есть видеокурсы аякс на джиквери. весьма неплохо человек рассказывает (на русском). могу дать ссылочку, если надо

Спустя 25 минут, 37 секунд (12.04.2011 - 22:02) panacea написал(а):
Конечно давай. Это очень интересно.

Спустя 3 минуты, 58 секунд (12.04.2011 - 22:06) Krevedko написал(а):
ссылка

и вот еще есть

ссылка 2 но эту я не скачивал

Спустя 11 минут, 6 секунд (12.04.2011 - 22:17) sergeiss написал(а):
Тему перенёс.

Спустя 18 минут, 57 секунд (12.04.2011 - 22:36) Riteret написал(а):
Себе сейчас качаю)))
http://rutracker.org/forum/viewtopic.php?t=3494152

Спустя 20 минут, 56 секунд (12.04.2011 - 22:57) kirik написал(а):
Нафига тут jquery?? У штудента DLE, функционал аяксовый там есть и использовать нужно его.

panacea, чего не получается-то?

Спустя 46 минут, 42 секунды (12.04.2011 - 23:44) panacea написал(а):
kirik
Да, у меня DLE 8.3
Аякс при нем. Вот надо сделать в списке кнопочку рассылки новостей для зарегеных пользователей. Рассылку сделал автоматической по крону. Кнопочка должна менять статусы в БД. В итоге надо апдейтить поле статус в табличке subscribe(id, id_user, id_cat, status) для id_user и для категории id_cat. В исполнительном файле чисто запрос и выдача html для картинки.
На выходе должна меняться картинка, как то маркероваться. Может даже как-то через классы сделать это. Нравится решение звездочек у гугла кстати через классы. Вот в краце вся задачка.
Трудности:
1. Не знаю аякса и его функций. я выше пытался написать код, кот. передает 2 параметра в исп. файл. Передавать постом тока и научился.
2. Не знаю как менять картинку после запроса. Не ясна логика условий в аяксе. Каждый раз ведь определять подписан юзверь или нет.
Короче запутался...

Спустя 16 часов, 43 минуты, 22 секунды (13.04.2011 - 16:27) panacea написал(а):
Может как-то так попробовать?
HTML
<span class="mail0" title="Подпишись на новости" id="mail-news-3"></span>
CSS
.mail0, mail1 {
display: inline-block;
width: 21px; height: 16px;
margin-right: 3px;
background-attachment: scroll;
background-repeat: no-repeat;
background-size: auto;
background-origin: padding-box;
background-clip: border-box;
background-color: transparent;
}

AJAX
//-----------------------------------
//START AJAX SUBSCIBE
//-----------------------------------

function subscribe( user, id_cat ) {
var ajax = new dle_ajax();
ajax.onShow ('');
var varsString = ""; // не знаю, что ей присвоить?
ajax.setVar("category", id_cat);
ajax.setVar("user", user);
ajax.requestFile = dle_root + "engine/ajax/subscibe.php";
ajax.method = 'POST';
ajax.element = 'mail-news-' + id_cat;
ajax.sendAJAX(varsString);
//Тут должон быть код смены картинки пока не разобрался как сделать???
};
//-----------------------------------
// END AJAX SUBSCIBE
//-----------------------------------

Тогда вопросы - как менять class аяксом и как передать его в исполнительный файл? Для того чтоб менять статус в БД.
Если mail0 то менять статус на 1, если mail1, то менять на 0. Лучшего не придумал пока. Может вы что дельное подскажите?

Спустя 2 часа, 18 минут, 29 секунд (13.04.2011 - 18:46) panacea написал(а):
Нашел аналогию в движке. Закладки. Осталось разобраться как они работают.

Спустя 31 минута, 52 секунды (13.04.2011 - 19:18) webmonkey написал(а):
Изменение класса
document.getElementById('mail-news-3').setAttribute('class', 'mail1');

Спустя 2 часа, 19 минут, 17 секунд (13.04.2011 - 21:37) kirik написал(а):
panacea
Нужно назначить метод, который вызывается по окончанию ajax запроса:
JS
function subscribe( user, id_cat ) {
var ajax = new dle_ajax();
ajax.onShow ('');
var varsString = ""; // не знаю, что ей присвоить?
ajax.setVar("category", id_cat);
ajax.setVar("user", user);
ajax.requestFile = dle_root + "engine/ajax/subscibe.php";
ajax.method = 'POST';
ajax.element = 'mail-news-' + id_cat;
ajax.sendAJAX(varsString);
// вот волшебные строчки :)
ajax.onCompletion = function () {
// this.response - тут будет текст ответа
var btn = document.getElementById("mail_news"); // наша кнопка
if(this.response == 1) {
// если вернули 1, значит пост добавлен в избранное, и показываем кнопку "удалить"
btn.className = 'delete';
btn.innerHTML = 'Удалить';
} else {
// если вернули 0, значит пост удалён из избранного, и показываем кнопку "добавить"
btn.className = 'add';
btn.innerHTML = 'Добавить';
}
}
}
;


HTML
<span class="CLASS" title="Подпишись на новости" id="mail_news">TEXT</span>
<!-- когда выводим кнопку на странице, подставляем нужный CLASS и TEXT -->


CSS
#mail_news {
/* bla bla */
}
#mail_news.delete {
/* bla bla */
color: red;
}
#mail_news.add {
/* bla bla */
color: green;
}


Скрипт к которому обращаемся с помощью AJAX запроса должен отдвать 1 в случае, если пост добавлен в избранное и 0 если пост удалён оттуда.

Как-то так.. Должно работать :)

Спустя 1 час, 1 минута, 16 секунд (13.04.2011 - 22:38) panacea написал(а):
kirik
Спасибо. А Закладки работают так.
AJAX
function doFavorites( fav_id, event )
{
ShowLoading('');

$.get(dle_root + "engine/ajax/favorites.php", { fav_id: fav_id, action: event, skin: dle_skin }, function(data){

HideLoading('');

$("#fav-id-" + fav_id).html(data);

});

return false;
};

PHP

if( $_REQUEST['action'] == "plus" ) {
//Запросик и выдаем картинку
$buffer = "<img src=\"" . $config['http_home_url'] . "templates/{$config['skin']}/dleimages/minus_fav.gif\" onclick=\"doFavorites('" . $id . "', 'minus'); return false;\" title=\"" . $lang['news_minfav'] . "\" style=\"vertical-align: middle;border: none;\" />";
} elseif( $_REQUEST['action'] == "minus" ) {
//Запросик и выдаем картинку
$buffer = "<img src=\"" . $config['http_home_url'] . "templates/{$config['skin']}/dleimages/plus_fav.gif\" onclick=\"doFavorites('" . $id . "', 'plus'); return false;\" title=\"" . $lang['news_addfav'] . "\" style=\"vertical-align: middle;border: none;\" />";
}
echo $buffer;

HTML
<a id="fav-id-733" href="/index.php?do=favorites&doaction=add&id=733"><img src="/templates/www/dleimages/plus_fav.gif" onclick="doFavorites('733', 'plus'); return false;"
title="Добавить новость в закладки" style="vertical-align: middle;border: none;" alt="" /></a>

Спустя 51 минута (13.04.2011 - 23:29) kirik написал(а):
Цитата (panacea @ 13.04.2011 - 15:38)
Спасибо. А Закладки работают так.

Можно и закладки переделать.
Это первое что я писал для dle, а там похоже есть что-то типа jquery встроенного.

Спустя 12 часов, 10 минут, 24 секунды (14.04.2011 - 11:40) panacea написал(а):
Меня вдруг начала смущать строчка.

ajax.element = 'mail-news-' + id_cat;

Что за элемент и нахрена он нужен?

Спустя 9 часов, 37 минут, 52 секунды (14.04.2011 - 21:18) kirik написал(а):
panacea
А убери эту строчку с элементом.. походу лишняя.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.