javascript
  • jquery
  • dynamic-linking
  • 2010-11-19 16 views 0 likes 
    0

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

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

    的问题是如何写的链接,使“虚拟链路”传递的目标网址,服务器端的代码,而曲解目标网址为“虚拟链路”的一部分?

    我的意思是,如果“虚拟链路”看起来是这样的:

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

    那么服务器端代码会抱怨说,它不承认这个目标(它会认为在google.com目的地是/logclick URL路由,而不是正在传递到/logclick路径字符串值的一部分。

    但是,在一个jQuery $.each循环的情况下,我将如何创建网址POST值为/logclick处理程序而不是GET

    回答

    2

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

    $('#link').append("<a href='" + encodeURIComponent(item.url) + "'></a>"); 
    
    +0

    文档:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent – 2010-11-19 15:30:58

    0

    但是,在一个jQuery $。每次循环的背景下,如何将我创建的网址,而不是POST值到/ logclick处理器得到什么?

    为了发送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); 
    }); 
    
    +0

    你不能用一个jQuery'$ .post'没有一个形式? – corbel 2010-11-19 15:42:35

    +0

    $ .post是简单的,是的。取决于你想要什么和你需要什么;) – Andy 2010-11-19 15:52:00

    相关问题