2016-03-27 2 views
0

Ich möchte Postwerte von der aktuellen Seite abrufen, während meine Formularaktion auf eine andere Seite verweist. Unten ist Codebeispiel:Wie kann ich den Wert von der aktuellen Seite erhalten, wenn meine Formularaktion auf eine andere Seite zeigt?

<form id="form1" name="form1" action='page2.php' method="post"> 
<input type="text" id="test" name="test" value="<?php echo 'test'; ?>" /> 
<input type='submit' value='submit' /> 
</form> 

//i want to get the value here but it's not working because all value pass to page2.php 
$value = $_POST['test']; 
echo $value; 

Beraten Sie mich, wie man diese Typen durchführt!

+0

, die Daten nicht existieren würden, bis das Formular abgeschickt wurde ... und dann werden Sie auf einer anderen Seite sein. nicht sicher, was du versuchst zu tun. – smerny

+0

Aktion auf aktuelle Seite ändern – ttdijkstra

+0

Nennen Sie Ihr Skript "page2.php"? – jDo

Antwort

1

Sie können die Formularübermittlung abfangen, indem Sie JavaScript im Attribut onsubmit des Formulars verwenden. Dann können Sie einen AJAX-Anruf zu Ihrem zweiten Einreichungsort tätigen.

Wenn Sie die Formularübermittlung abzubrechen, beenden Sie die JavaScript mit return false;

Hier ist, was es aussehen könnte:

<form method="POST" action="page2.php" onsubmit="submit(this)"> ... </form> 

Und dann in Ihrem JavaScript:

function submit(form) { 
    var ajax = new XMLHttpRequest(); 
    ajax.open("POST", "page1.php"); 
    ajax.send(new FormData(form)); 
} 

Sie können this source hilfreich finden, um FormData Objekte in AJAX zu senden.

Alternativ, jQuery macht es sehr einfache AJAX-Aufrufe zu tun.

function submit(form) { 
    $.post("page1.php", $(form).serialize()); 
} 
+0

Dies könnte die Antwort auf mein Problem sein. Ich muss nur einen Weg finden, es mit Ajax zu benennen. – EDDY

+0

Die Verwendung von AJAX ist eine separate Frage.Dafür gibt es viele Ressourcen auf SO und Google, aber wenn Sie möchten, kann ich ein Snippet hinzufügen, wie es aussieht. – 4castle

+0

wird es zu schätzen wissen, wenn Sie mir eine Idee dazu hinzufügen können :) – EDDY

0

Hier ist ein Beispiel mit AJAX-Formulardaten zu senden, dass die Datei ohne die Client-Datei und führt zu aktualisieren oder erneut direkt zu verschiedenen Seiten zu benötigen.

function submit() { 
    var v = document.getElementById("1234").value; 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      //inserts output from file into given location 
      //in this case, a div with id of 'content'    
      document.getElementById("content").innerHTML = xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("POST", "upload.php?data="+v, true); 
    xmlhttp.send(); 
} 

Es gibt Möglichkeiten, JQuery zu verwenden, auch (How to submit form on file select without page reload?)

+0

'POST' verwendet die URL nicht zum Senden von Daten, sondern verwendet einen String in der' send() 'Methode. – 4castle

+0

Ich verstehe, aber ich denke, dass die URL für die Frage des Benutzers irrelevant ist. "GET" oder "POST" spielt keine Rolle, wenn es darum geht, Daten zu behalten, wenn es darum geht, eine Umleitung mit Javascript/AJAX zu umgehen. Dieses Beispiel stammt von einer Multimedia-Upload-Funktion, um zu erklären, warum 'POST' verwendet wurde. –

+0

Sie laden keine Dateien hoch. Sie reichen nur die Schlüssel-Wert-Paare eines Formulars ein. Ich sage, dass Sie 'xmlhttp.send (" data = "+ v);' statt eine Abfragezeichenfolge in der URL verwenden müssen. Nur 'GET' sendet Daten mit der Abfragezeichenfolge. [Siehe den Abschnitt hier für die Verwendung von POST] (http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp) – 4castle

Verwandte Themen