2009-04-20 11 views
2

Ich verwende derzeit einen JavaScript-Code, um eine ganze Zeile in meiner Tabelle klickbar zu machen. Sobald die Zeile angeklickt ist, wird eine Funktion ausgeführt, ich frage mich, was ich verwenden kann, um auf eine PHP-Seite umzuleiten und vorzugsweise eine Post-Variable mitzuschicken. Meine Vermutung ist AJAX, aber ich bin mir nicht sicher, wie oder ob es funktionieren würde.Wie sende ich Werte zwischen Seiten mit Javascript?

Meine Javascript Funktion:

function DoNav(theUrl) 
    { 
    document.location.href = theUrl; 
    } 

Mein HTML:

<tr onclick="DoNav('myphpscript.php');"> 

ich Zugriff auf jQuery haben, so dass auch eine Option. Jede Hilfe wird geschätzt, Danke!

Antwort

2

Wenn die Menge an Daten nicht lächerlich groß ist, eine Abfrage-Zeichenfolge verwenden ...

< tr Onclick = "DoNav ('myphpscript.php key = Wert?');">

Oder wenn Sie eine natürliche HTTP-Post benötigen, können Sie programmatisch das Formular mit Javascript einreichen ...

onclick="document.forms[0].submit();" 
+0

Ich habe PHP post vars in der URL aus Sicherheitsgründen deaktiviert. Also muss ich es als Formular senden. –

+0

Sie nehmen an, dass er bereits ein Form-Element in seinem DOM hat. Er schlägt nicht vor, dass er tut. Nur weil Sie auf eine Tabellenzeile klicken, bedeutet das nicht, dass sie in einer Form ist und dass die Werte, die er benötigt, darin enthalten sind. Er braucht wahrscheinlich einen gewissen Wert in Bezug auf die Reihe, auf die er geklickt hat. – KyleFarris

+0

Hören. Kritisiere meine Antwort nicht - finde etwas Besseres zu tun. Ich bin nicht hier, um deinen Donner zu stehlen. Ich habe versucht ihm zu helfen. Das ist alles. –

3

Wenn Sie auf eine neue Seite gehen, senden Sie einfach das Formular wie gewohnt. Legen Sie die Daten in Formularfelder (bei Bedarf ausgeblendet). Keine Notwendigkeit, Ajax, jQuery oder irgendeine andere Magie, es sei denn, Sie wollen auf der gleichen Seite bleiben und im Hintergrund posten.

+0

Ich verstehe, aber ich muss es machen, so dass die Art und Weise, wenn sie im Großen und Ganzen klicken tr es das Formular abschickt. Ich muss auch die "mid" (ID-Nummer) des Poststückes, auf das sie klicken, senden, damit ich es auf der nächsten Seite laden kann. –

+0

@Chris: Verwenden Sie form.submit() dafür. (Beachten Sie, dass es keine jQuery-Methode ist) – JPot

4

wenn Sie die Daten (nicht verwenden GET), eine einfache Möglichkeit POST brauchen, ist ein Formular-Element zu erstellen Fügen Sie Eingabeelemente mit t direkt hinzu Er schätzt, dass du es brauchst und schicke es ein. Sie können das tun, wie so, wenn Sie jQuery verwenden:

$(function() { 
    $('tr').click(function() { 
     var mail_id = /* get the mail id of this row... not sure where since I dont' have the HTML */ 
     $('body').append('<form method="post" action="myphpscript.php" id="donavform" style="display:none;"></form>'); 
     $('#donavform').append('<input type="hidden" name="mid" value="'+mail_id+'" />'); 
     $('#donavform').submit(); 
    }); 
}); 

Hoffnung, die Sinn macht. Wenn nicht, lass es mich wissen! Es ist, okay ...

Erläuterung: Die erste Zeile ist eine jQuery Abkürzung Art zu sagen „wenn das Dokument geladen ... erfolgt“ Also, wenn die Seite geladen wird getan, ich bin Gehen Sie zum Anhängen eines Ereignis-Listeners an alle Elemente im Dokument. Wenn auf eines dieser Elemente geklickt wird, können wir die E-Mail-ID (und was Sie sonst noch benötigen) extrahieren, die in Bezug zu dieser bestimmten Tabellenzeile steht. Also, wenn Sie HTML wie folgt hatte:

<!-- 8435 is the mail ID in this example. --> 
<tr id="row3">8435</tr> 

Dann könnten wir die mail_id Variable extrahieren etwa so:

var mail_id = $(this).html(); 

Jetzt werden wir ein verstecktes Formularelement an das Ende des Körpers befestigen des HTML (es ist nicht wirklich wichtig, wo wir es hinstellen, da es versteckt ist ... also ist das Ende in Ordnung). In diesem Formularelement legen wir die Methode auf POST und die Aktion auf jede php-Datei fest, an die Sie POST senden müssen. Ich habe auch eine ID festgelegt, auf die im nächsten Schritt leicht Bezug genommen wird.

Ich werde jetzt das neu erstellte Formularelement mit seiner ID auswählen, und ich werde ein neues verstecktes Eingabeelement mit dem entsprechenden Namen Wertepaar anhängen.

$('#donavform').append('<input type="hidden" name="mid" value="'+mail_id+'" />'); 

Schließlich werde ich die jQuery JavaScript einreichen Methode verwenden, die einreichen Ereignis auf dem Formular auszulösen.Dies entspricht im Wesentlichen dem Drücken der Schaltfläche "Senden" in einem normalen Formular.

Probieren Sie es aus, es sollte einwandfrei funktionieren.

+0

Ich bin mir nicht sicher, was Sie meinen, aber es scheint wie eine gute Lösung. Könntest du es bitte ein bisschen mehr erklären? Vielen Dank!! –

0

Sie könnten die Daten in einem Cookie senden. Es gibt ein nettes jQuery-Plugin, das beim Setzen von Cookies im jQuery-Namespace hilft.

http://plugins.jquery.com/project/cookie

+0

Interessant, weißt du, wie ich vielleicht eine Variable von meinem PHP-Skript an die jQuery übergeben kann, damit ich sie als Cookie setzen kann? –

+0

Ich würde vorschlagen, es direkt aus PHP mit der setcookie() -Funktion, http://php.net/setcookie setzen. Sie sollten später über jQuery darauf zugreifen können. Wenn das keine Option ist, müssen Sie möglicherweise die Variable ausdrucken und jQuery damit umgehen. –

+0

Das einzige Problem hier ist, dass Sie in bestimmten PHP.ini-Setups nicht in der Lage sind, Cookies, die für PHP zugänglich sind, mit Javascript zu ändern. Dies dient Sicherheitszwecken. Da er GET deaktiviert, würde ich mir vorstellen, dass er auch keine Vars in Cookies posten möchte. Es ist in der Regel eine schlechte Übung, dies zu tun, es sei denn, Sie benötigen den Cookie, um auf mehrere Seiten und speziell auf JavaScript und nicht auf PHP zuzugreifen. – KyleFarris

Verwandte Themen