2010-11-19 9 views
0

クライアントサイドスクリプトにurl値があります。それらをループしながら、これらのURL値をオンクリックしてサーバーサイドのクリックハンドラに渡すリンクを作成したいと考えています。サーバー側コード(/logclick)は、ユーザーが/logclickサーバー側ハンドラーにパラメーターとして渡されたURLの場所に誘導される前に、監査の目的でクリックする時間と宛先を記録します。

$.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と思います目的地は

/logclick URLルートの代わりに、/logclickルートに渡される文字列値の一部である。しかし、jQueryの$.eachループの文脈では、どのように私はのURLを作成しますの値はGETではなく/logclickハンドラになりますか?

答えて

2

サーバー側のフレームワークが何をしているのかよく分かりませんが、URLのその部分をエンコードする必要があります。

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

ドキュメント:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent –

0

しかしには、jQueryの$ .eachループの文脈の中で、どのように私は、POST/logclickハンドラに値ではなくはGET URLを作成するのでしょうか?

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

+0

$。postはより単純です。あなたが望むものと必要なものに依存します;) – Andy

関連する問題