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

Тема в разделе "JavaScript", создана пользователем Горбушка, 4 июн 2014.

Модераторы: ZiX
  1. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.199
    Симпатии:
    2.223
    Собственно, нужно посчитать количество кликов по ссылке. Подключать аналитику и прочее нельзя.

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

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

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

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

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    Работоспособность в любом случае сохранится, так как серверу на ответ дается определенное время. Если за это время от сервера не поступит ответ, то запрос завершится с ошибкой.

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

    ПС к тому же необязательно отправлять пользователя на другую страницу, дожидаясь ответа от сервера. Можно послать его сразу после отправки на сервер данных, сервер их все равно получит если живой
     
    Последнее редактирование: 4 июн 2014
    Serafimer нравится это.
  3. Serafimer

    Serafimer Создатель

    Заблокирован
    Регистр.:
    24 апр 2014
    Сообщения:
    36
    Симпатии:
    17
    Если есть JQuery и я правильно понял, то
    HTML:
    
    $( "#target" ).click(function(e) {
        e.preventDefault()// да, так надо
        var loc = $(this).attr("href");
        $.post( "example.php")
          .done(function() {
            window.location = loc;
          });
    });
    
    То есть делаем POST запрос, а после его выполнения грим браузеру свалить туда-то
     
    Последнее редактирование: 4 июн 2014
    latteo нравится это.
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.199
    Симпатии:
    2.223
    Так, спасибо, что откликнулись, но я не корректно задал вопрос. Вернее, спросил не то, что нужно =)
    И так:
    Файл 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 не создаётся
    Убираем ссылку. Происходит ошибка:
    Убираем ссылку, отправку на другую страницу выносим за пределы калбек функции - переход на другую страницу производится, но файл 1.тхт не создаётся.

    Что я делаю не правильно? Крыша не варит..
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.546
    Симпатии:
    1.418
    Похоже на то, что php скрипт неверный формат отдаёт - смотри в новом окне, что приходит от сервера по твоей длинной ссылке и является ли это валидным JSON. PHP мог чего-то своего подкинуть, что порушило твой JSON.
     
    Vishez нравится это.
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.199
    Симпатии:
    2.223
    Итак, эта проблема была в гениальности криворука разработчика jQuery. Этому уникуму припёрло в бошку, уж не знаю зачем, что перед json, нужно вернуть id вызова функции callback.

    Выглядит это так:
    PHP:
    echo $_GET['callback'] . $json;