Как передать строки URL в мой обработчик кликов на стороне сервера в цикле jQuery $ .each? - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть значения URL в моем клиентском скрипте. Зацикливаясь на них, я хочу создать ссылки, которые будут передавать эти значения URL по щелчку обратно в мой обработчик щелчков на стороне сервера. Код на стороне сервера (/logclick) записывает время и назначение клика для целей аудита, прежде чем пользователь будет перенаправлен на URL-адрес, который был передан в качестве параметра на /logclick сторону сервера. обработчик.

$.each(data.items, function(i, item) 
{
        $('#link').append("<a href='" + item.url + "'></a>");
});

Вопрос в том, как написать ссылку, чтобы "виртуальная ссылка" передавала целевой URL-адрес в код на стороне сервера, не интерпретируя целевой URL-адрес как часть "виртуальной ссылки"?

Что я имею в виду, если «виртуальная ссылка» выглядит следующим образом:

/logclick/http://www.google.com/reader/view/subscription/a

тогда серверный код будет жаловаться, что не распознает этот пункт назначения (он будет думать, что пункт назначения google.com является частью URL-маршрута /logclick вместо строкового значения, которое передается на маршрут /logclick.

Но, в контексте цикла jQuery $.each, как мне создать URL, которые POST имеют значения для обработчика /logclick, а не GET?

Ответы [ 2 ]

2 голосов
/ 19 ноября 2010

Я не уверен, что делает ваша серверная инфраструктура, но вам может понадобиться кодировать эту часть URL.

$('#link').append("<a href='" + encodeURIComponent(item.url) + "'></a>");
0 голосов
/ 19 ноября 2010

Но в контексте цикла jQuery $ .each, как мне создать URL-адреса, которые отправляют значения POST в обработчик / logclick вместо GET?

Для отправки запроса POST вам необходимо использовать для этого существующий элемент FORM.

<form id="my-post-form" method="post" action="/uri-router/">
<input type="hidden" name="item-url" value="" /></form>

...

$.each(data.items, function(i, item)
{
     var link = $("<a />");
     link.attr('href', item.url).click(function(){
        $('#my-post-form input[name=item-url]').val($(this).attr('href'));
        $('#my-post-form')[0].submit();
        return false; 
     });
     $('#link').append(link);
});
...