2010-05-23 3 views
5

Ich habe diese herkömmlichen Submit-Button, die eine Form wie folgt einreichen:Wie überprüft man, ob ein Formular über Javascript eingereicht wird?

<form method="post" id="form_submit"> 
... 
<input class="button" type="submit" name="Submit" value="Submit"> 
</form> 

Und ich überprüfen, ob die Senden-Schaltfläche diese geklickt wird mit:

if(isset($_POST['Submit'])){ 
    //update DB 
} 

Jetzt habe ich eine einreichen Link jquery mit:

<a href="#" onclick="publish(); return false;">Submit</a> 

JS-Code:

$("#form_submit").submit(); 

Was ist der alternative Weg, hier für if(isset($_POST['Submit'])) zu verwenden, da ich das Formular mit Javascript einreiche?

+0

einreichen Sie über AJAX/irgendein plugin, oder du willst wissen '.submit()' wurde aufgerufen? Wenn Sie das Formular über Javascript senden, wird die Schaltfläche, die ansonsten vorhanden wäre, nicht in den veröffentlichten Daten enthalten sein. –

+0

Ich arbeite an einer Facebook-App, und ich rufe ein FB-Popup vor dem Aufruf der .submit(), danke für die Hilfe von allen, Sarfraz genagelt das Problem richtig. Der versteckte Eingang ist trotzdem eine gute Wahl :) – SteD

Antwort

5

Wenn ich Sie richtig verstehe, versuchen Sie dies:

if ($_SERVER['REQUEST_METHOD'] === 'POST') 
{ 
// your code......... 
} 
+0

+1 Schön und einfach. –

+0

Danke Mann! Das ist genau das, was ich brauche. – SteD

+0

@SteD: Gern geschehen :) – Sarfraz

0

Die beste Lösung „tun Sie nicht, dass“ ist. Wenn Sie ein Formular absenden möchten, verwenden Sie eine Schaltfläche zum Absenden (nicht als Nebeneffekt, wenn Sie auf einen Hyperlink oben auf der Seite klicken). Jegliches JavaScript, das Sie ausführen möchten, kann dann im Ereignis submit des Formulars behandelt werden.

Wenn Sie es wirklich als Nebeneffekt machen wollen, dann prüfen Sie, ob ein anderes Feld vorhanden ist, von dem Sie wissen, dass es gesetzt wird. Sie können ein verstecktes Feld hinzufügen, um sicherzustellen, dass eine Kombination aus Name/Wert vorhanden ist, wenn Sie möchten.

1

Wenn ich Ihr Problem richtig verstanden habe, können Sie einfach Eingabe-Typ zu versteckt ändern.

$ _POST ['Submit'] Variable wird definiert.

4

Sie sollten einen versteckten Eingang hinzufügen <input type="hidden" name="formsubmit" value="yes" /> zu der Form, die immer gestellt wird erhalten, und prüfen Sie, dass anstelle der Taste (die nur abgegeben wird, wenn es auf geklickt wird ..)