Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.03.2015, 17:37
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

Событие onClick делает +1
Доброго времени суток, сделал вот такие соц. кнопки, но столкнулся с проблемой подсчета количества нажатий, долго мучал получение оригинальных данных с серверов соц. сетей!
Подумываю, как бы сделать простую запись в файл на 3 счетчика?
Ответить с цитированием
  #2 (permalink)  
Старый 08.03.2015, 18:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от karakym
Подумываю, как бы сделать простую запись в файл на 3 счетчика?
Это не надежно.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 08.03.2015, 19:18
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

В каком плане не надежно?
Ответить с цитированием
  #4 (permalink)  
Старый 08.03.2015, 20:05
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ну клик по соцкнопке не всегда приводит к посту в соцсети. Юзер может бросить дело на полпути, или тупо инет обрубиться именно в этот момент или еще что-нибудь.
В общем можно сделать счетчик именно "кликов" по кнопкам, но не числа "лайков/шарингов" в соцсетях.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 08.03.2015, 22:34
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

Сообщение от danik.js Посмотреть сообщение
Ну клик по соцкнопке не всегда приводит к посту в соцсети. Юзер может бросить дело на полпути, или тупо инет обрубиться именно в этот момент или еще что-нибудь.
В общем можно сделать счетчик именно "кликов" по кнопкам, но не числа "лайков/шарингов" в соцсетях.
Я думаю мне это подойдет, пусть пользователи видят сколько нажато на кнопку!
Ответить с цитированием
  #6 (permalink)  
Старый 08.03.2015, 22:35
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

<script>
Share = {
	vkontakte: function(purl, ptitle, pimg, text) {
		url  = 'http://vkontakte.ru/share.php?';
		url += 'url='          + encodeURIComponent(purl);
		url += '&title='       + encodeURIComponent(ptitle);
		url += '&description=' + encodeURIComponent(text);
		url += '&image='       + encodeURIComponent(pimg);
		url += '&noparse=true';
		Share.popup(url);
	},
	odnoklassniki: function(purl, text) {
		url  = 'http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1';
		url += '&st.comments=' + encodeURIComponent(text);
		url += '&st._surl='    + encodeURIComponent(purl);
		Share.popup(url);
	},
  gplus: function(purl, text) {
    url  =  'https://plus.google.com/share?';
    url += 'url='          + encodeURIComponent(purl);
		Share.popup(url);
  },
	popup: function(url) {
		window.open(url,'','toolbar=0,status=0,width=626,height=436');
	}
};
</script>

<a class="social" id="vk" onclick="Share.vkontakte('http://electrick.dp.ua/','Вызов электрика в Днепропетровске.','http://electrick.dp.ua/images/me.jpg','Опытный электрик выполнит все виды электромонтажных работ')" title="">
Ответить с цитированием
  #7 (permalink)  
Старый 09.03.2015, 03:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Тебе нужно:
1) Скрипт на сервере, который будет принимать аякс-запросы на инкремент счетчика, а также отдавать все счетчики либо аяксом либо сразу же, при генерации страницы. Хранить счетчики лучше в бд, но хочешь - храни в файле, в json-формате.
2) Скрипт на js, который будет слать на сервер запрос на инкремент счетчика в момент клика по кнопке. Добавь например функцию increment() в свой Share, в нем XMLHttpRequest() объект, который будет слать запрос на сервер, с указанием названия соцсети по которой кликнули. Вызывай эту функцию из каждой соцсети.
3) Сделать вывод состояния счетчиков. В момент загрузки скраницы делаешь аякс запрос на получение состояния, по ответу проходишь по своим кнопочкам и выводишь в них циферки. Вместа якса можешь сразу выводить сервером либо сразу в html либо в js и из js уже в html. Модифицируешь скрипты чтобы при инкременте счетчика сервер возвращал состояние счетчика и js его тут же выводил в кнопку.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 09.03.2015, 19:43
Аватар для karakym
Профессор
Отправить личное сообщение для karakym Посмотреть профиль Найти все сообщения от karakym
 
Регистрация: 21.02.2010
Сообщений: 213

Сообщение от danik.js Посмотреть сообщение
Тебе нужно:
1) Скрипт на сервере, который будет принимать аякс-запросы на инкремент счетчика, а также отдавать все счетчики либо аяксом либо сразу же, при генерации страницы. Хранить счетчики лучше в бд, но хочешь - храни в файле, в json-формате.
2) Скрипт на js, который будет слать на сервер запрос на инкремент счетчика в момент клика по кнопке. Добавь например функцию increment() в свой Share, в нем XMLHttpRequest() объект, который будет слать запрос на сервер, с указанием названия соцсети по которой кликнули. Вызывай эту функцию из каждой соцсети.
3) Сделать вывод состояния счетчиков. В момент загрузки скраницы делаешь аякс запрос на получение состояния, по ответу проходишь по своим кнопочкам и выводишь в них циферки. Вместа якса можешь сразу выводить сервером либо сразу в html либо в js и из js уже в html. Модифицируешь скрипты чтобы при инкременте счетчика сервер возвращал состояние счетчика и js его тут же выводил в кнопку.
Я так понимаю, это трудоемкий процесс?
Не могли бы вы сделать простенький примерчик сего чуда!?
Пожалуйста!
Ответить с цитированием
  #9 (permalink)  
Старый 09.03.2015, 20:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

файл: {"gplus":0, "vk": 0}
php:

$network = $_POST['network'];
$data = json_decode(file_get_contents('social-counters.json'), true);

$data[$network]++;

file_put_contents('social-counters.json', json_encode($data));

header('Content-Type: text/plain'):
// отдаем текущее значение счетчика.
echo $data[$network];


Или вместо json можно .ini заюзать.

Шлешь post запрос /increment.php с телом network={тутимясоцсети}.
По XMLHttpRequest гугли. Остальное сам.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 09.03.2015, 20:15
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от danik.js
Или вместо json можно .ini заюзать.
поясни, parse_ini_file читает файл, для записи функций родных нет
у функций file_get_contents, file_put_contents есть параметр $context, который позволяет передавать post, get и ...
$result = json_decode(file_get_contents(
    $url,
    false, // use_include_path
    stream_context_create(array(
        'http' => array(
            'method' => 'GET',
            'header' => "Content-Type: type=application/json\r\nX-Requested-With: XMLHttpRequest"
        )
    ))
));

printf("<pre>%s</pre>", print_r($result, true));

Последний раз редактировалось Vlasenko Fedor, 09.03.2015 в 20:21.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поймать событие onclick() не обычным способом? mrmammoth Events/DOM/Window 6 29.04.2014 15:50
Приостановить событие с OnClick() romoga Events/DOM/Window 3 05.02.2014 05:50
ДОбавить событие live к тегу onclick jonick Элементы интерфейса 6 24.09.2013 19:54
событие onclick chelsea Общие вопросы Javascript 1 17.09.2010 11:31
Событие onClick avtor01 Events/DOM/Window 3 03.09.2009 18:01