Количество кликов по ссылке

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.524
Собственно, нужно посчитать количество кликов по ссылке. Подключать аналитику и прочее нельзя.

Задача: при клике вызывать событие onclick с отправкой запроса на некую страницу. Параллельно выполняем переход по ссылке.

Нюанс: статистика будет собираться сторонним сервером, поэтому требуется сохранить работоспособность даже при отключении сервера статистики, когда запрос не вернёт ничего (сервер выключен, не пингуется).

Кто что может предложить?

HTML:
<a href="link" onclick="function">тест</a>
Есть ли гарантия, что при клике function выполнится, если это функция AJAX-запрос методом POST на некий адрес?
 
Последнее редактирование:
Собственно, нужно посчитать количество кликов по ссылке. Подключать аналитику и прочее нельзя.

Задача: при клике вызывать событие onclick с отправкой запроса на некую страницу. Параллельно выполняем переход по ссылке.

Нюанс: статистика будет собираться сторонним сервером, поэтому требуется сохранить работоспособность даже при отключении сервера статистики, когда запрос не вернёт ничего (сервер выключен, не пингуется).

Кто что может предложить?

HTML:
<a href="link" onclick="function">тест</a>
Есть ли гарантия, что при клике function выполнится, если это функция AJAX-запрос методом POST на некий адрес?
Работоспособность в любом случае сохранится, так как серверу на ответ дается определенное время. Если за это время от сервера не поступит ответ, то запрос завершится с ошибкой.

Различие в том что в асинхронном режиме js продолжит свою работу не дожидаясь ответа от сервера. В синхронном все повиснет, пока не придет ответ от сервера, или запрос не закончится с ошибкой.

ПС к тому же необязательно отправлять пользователя на другую страницу, дожидаясь ответа от сервера. Можно послать его сразу после отправки на сервер данных, сервер их все равно получит если живой
 
Последнее редактирование:
  • Заблокирован
  • #3
Если есть JQuery и я правильно понял, то
HTML:
$( "#target" ).click(function(e) {
    e.preventDefault()// да, так надо
    var loc = $(this).attr("href");
    $.post( "example.php")
      .done(function() {
        window.location = loc;
      });
});
То есть делаем POST запрос, а после его выполнения грим браузеру свалить туда-то
 
Последнее редактирование:
Так, спасибо, что откликнулись, но я не корректно задал вопрос. Вернее, спросил не то, что нужно =)
И так:
Файл index.php (находится на другом домене, точнее вообще на IP 10.х.х.х - всё проходит только в локальной сети, доступа во вне нет, из вне тоже.)
PHP:
<?php
 
file_put_contents('1.txt', "1");
 
?>
{
    "users": [{
        "id" : 1,
        "name": "Bill Gates",
        "age": 43
    }, {
        "id" : 2,
        "name": "Sergey Brin",
        "age": 33
    }, {
        "id" : 3,
        "name": "Larry Page",
        "age": 34
    }]
}
Яваскрипт:
Код:
function setrate(id) {
                $.getJSON("http://х.х.х.х/_gorbushka/index.php?callback=?", function(){
                               document.location.href = "http://www.gorbushka.name";
                });
}
Вызов идёт обычным onclick в ссылке...

И так, если оставить ссылку на внешний сайт/файл/страницу - происходит переход по ссылке, 1.txt не создаётся
Убираем ссылку. Происходит ошибка:
Resource interpreted as Script but transferred with MIME type text/html: "Для просмотра ссылки Войди или Зарегистрируйся". jquery.js:8285
Uncaught SyntaxError: Unexpected token : index,php line 2
Убираем ссылку, отправку на другую страницу выносим за пределы калбек функции - переход на другую страницу производится, но файл 1.тхт не создаётся.

Что я делаю не правильно? Крыша не варит..
 
Похоже на то, что php скрипт неверный формат отдаёт - смотри в новом окне, что приходит от сервера по твоей длинной ссылке и является ли это валидным JSON. PHP мог чего-то своего подкинуть, что порушило твой JSON.
 
Итак, эта проблема была в гениальности криворука разработчика jQuery. Этому уникуму припёрло в бошку, уж не знаю зачем, что перед json, нужно вернуть id вызова функции callback.

Выглядит это так:
PHP:
echo $_GET['callback'] . $json;
 
Назад
Сверху