2010-11-19 3 views
0

Ich habe URL-Werte in meinem clientseitigen Skript. Während ich sie überschleife, möchte ich Links erstellen, die diese URL-Werte mit einem Klick an meinen serverseitigen Klick-Handler weiterleiten. Der serverseitige Code (/logclick) zeichnet die Zeit und das Ziel des Klicks für Überwachungszwecke auf, bevor der Benutzer an den URL-Speicherort weitergeleitet wird, der als Parameter an den serverseitigen Handler /logclick übergeben wurde.

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

Die Frage ist, wie die Verbindung zu schreiben, so dass die „virtuelle Verbindung“ übergibt die Ziel-URL an dem serverseitigen Code ohne die Ziel-URL als Teil der „virtuellen Verbindung“ falsch interpretiert?

Was ich meine ist, wenn die „virtuelle Verbindung“ sieht wie folgt aus:

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

dann die serverseitige Code wird sich beschweren, dass es nicht dieses Ziel nicht erkennt (es wird denken, die google.com Ziel ist Teil der /logclick url-Route statt einem String-Wert, der die /logclick Route geleitet wird.

Aber im Rahmen einer jQuery $.each Schleife, wie würde ich URLs erstellen, die POST Werte zu /logclick Handler eher als GET?

Antwort

2

Ich bin mir nicht sicher, was Ihr serverseitiges Framework tut, aber Sie müssen möglicherweise diesen Teil der URL kodieren.

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

Dokumentation: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent –

0

Aber im Rahmen einer Schleife .each jQuery $, wie würde ich erstellen URLs, die POST-Werte an den logclick Handler/statt GET?

Um eine POST-Anfrage zu senden, müssen Sie ein bestehendes FORM-Element verwenden.

<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

Können Sie nicht ein jquery 'verwenden .post' $ ohne Form? – corbel

+0

$ .post ist einfacher, yeah. Kommt drauf an was du willst und was du brauchst;) – Andy