Как отправить все нажатые ссылки на страницу перед переходом по URL-адресу в ссылке

Вопрос. Как мне настроить страницу так, чтобы все ссылки при нажатии переходили на страницу с именем query_data.cfm, где инициируется запрос к базе данных, а после завершения отправлял пользователя на URL-адрес исходной ссылки?

На данный момент я добавляю класс ко всем ссылкам на моей странице, используя javascript.

<script>
$(document).ready( function() {
    $('a').addClass("tracker");
});
</script>

Но я также хочу сделать так, чтобы все ссылки с этим классом, например <a class="tracker" href="www.mywebsite.com/page2.cfm">Page 2</a>, переходили на страницу с именем www.mywebsite.com/query_data.cfm, где выполняется запрос, передавая значение href в базу данных и после завершения перенаправления. пользователь www.mywebsite.com/page2.cfm

Я надеюсь, что этой информации достаточно, но если я что-то пропустил, пожалуйста, дайте мне знать.


person Denoteone    schedule 13.11.2014    source источник


Ответы (2)


Один из способов — просто изменить ссылки, например:

<a class="tracker" href="www.mywebsite.com/query_data.cfm?destination=page2.cfm">Page 2</a>

Затем все ссылки будут вести к query_data.cfm, который будет записывать #URL.destination# информацию, а затем CFLOCATION на #URL.destination#.

person Digital Chris    schedule 13.11.2014
comment
не могли бы вы помочь мне с javascript, который обновил бы все ссылки на моей странице, чтобы скрыть их в логике, которую вы изложили выше, со статическим URL-адресом query_data.cfm в качестве основного URL-адреса и фактический URL-адрес является переменной _GET? - person Denoteone; 13.11.2014
comment
Созданный мной jsFiddle действительно заменяет местоположение. Однако, если javascript отключен, он будет работать как обычные ссылки. - person abbottmw; 20.11.2014

Редактировать: О, ты тот же человек, мой плохой. Сбой при чтении.

Я предлагаю вам попробовать следующее: http://jsfiddle.net/xcr56gd1/.

Поскольку вы используете jquery для добавления к ссылкам, вы, надеюсь, увидите, как вы можете использовать jquery для изменения href на `/r.cfm?d= + $(this).attr('href'), правильно кодируя как URL.

$(document).ready(function () {
    $("a").not(".norm").on("click", function(e) {
        alert($(this).attr('href'));
        // The alert just demonstrates that it's working and how to get href.
        // You can call your ajax here.
        e.preventDefault();
    });
});

С этим кодом вы можете использовать jquery для всех ссылок без класса «норма», поэтому, если вы особенно хотите, чтобы ссылка не отслеживалась, вы бы сделали это так.

person Regular Jo    schedule 13.11.2014
comment
Я писал jsfiddle для этого в качестве доказательства концепции. Примерно та же идея, что и у вас. - person abbottmw; 13.11.2014
comment
Спасибо, cfqueryparam, это будет очень полезно, так что я понимаю... Где у вас есть комментарий о «ajax здесь, где я могу добавить свой код запроса к базе данных? ИЛИ это все еще должно быть в отдельном файле между этой ссылкой и URL-адресом, на который она указывает/ - person Denoteone; 13.11.2014
comment
Он будет помещен в отдельный файл, хотя это очень простой ajax-пост, все, что вам нужно будет опубликовать в нем, - это URL-адрес ссылки, другие данные, такие как материалы сеанса, доступные для вызываемой страницы ajax. - person Regular Jo; 13.11.2014