Javascript 如何将URL字符串传递给jQuery$。每个循环中的服务器端单击处理程序?

Javascript 如何将URL字符串传递给jQuery$。每个循环中的服务器端单击处理程序?,javascript,jquery,dynamic-linking,Javascript,Jquery,Dynamic Linking,我的客户端脚本中有url值。在对它们进行循环时,我希望创建链接,在单击返回时将这些URL值传递给我的服务器端单击处理程序。服务器端代码(/logclick)记录了在将用户定向到作为参数传递给/logclick服务器端处理程序的url位置之前,出于审核目的,单击的时间和目的地 $.each(data.items, function(i, item) { $('#link').append("<a href='" + item.url + "'></a>")

我的客户端脚本中有url值。在对它们进行循环时,我希望创建链接,在单击返回时将这些URL值传递给我的服务器端单击处理程序。服务器端代码(
/logclick
)记录了在将用户定向到作为参数传递给
/logclick
服务器端处理程序的url位置之前,出于审核目的,单击的时间和目的地

$.each(data.items, function(i, item) 
{
        $('#link').append("<a href='" + item.url + "'></a>");
});
然后服务器端代码会抱怨它不识别这个目的地(它会认为google.com目的地是
/logclick
url路由的一部分,而不是传递给
/logclick
路由的字符串值)


但是,在jQuery
$的上下文中,每个
循环,我如何创建URL,将
的值发布到
/logclick
处理程序,而不是
GET

我不确定服务器端框架在做什么,但您可能需要对URL的这一部分进行编码

$('#link').append("<a href='" + encodeURIComponent(item.url) + "'></a>");
$('#link')。追加(“”);
但是,在jQuery$.each循环的上下文中,如何创建将值发布到/logclick处理程序而不是获取值的URL

为了发送POST请求,您需要为此使用现有的表单元素

<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);
});

...
$.each(data.items,function(i,item)
{
变量链接=$(“”);
link.attr('href',item.url)。单击(函数(){
$('#我的帖子表单输入[name=item url]').val($(this.attr('href'));
$(“#我的帖子表单”)[0]。提交();
返回false;
});
$('#link')。追加(link);
});

文档:你不能在没有表单的情况下使用jquery
$.post
吗?$.post更简单,是的。这取决于你想要什么和需要什么;)
<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);
});