2017-02-19 2 views
0

Ich habe ein Dilemma (das ich noch einen Weg finden). Aus irgendeinem Grund PHP möchte nicht überprüfen, ob $_POST["login"] am unteren Rand der <body> Tag in meinem Dokument.Überprüfung Isset am Ende der Seite funktioniert nicht

Es funktioniert, wenn es ganz oben auf dem Dokument oder sogar oben auf dem <body> Tag platziert wird. Allerdings, wenn ich es an der Spitze des Dokuments/<body> Tag setzen, wird die Ausgabe JavaScript nicht ausgeführt werden!

Zum Beispiel ist dies das Dokument (wo die PHP wird nicht ausgeführt):

<form> 
    <span id="example-element">Displaying.</span> 
    <input type="text" name="example"> 
    <button type="submit" name="login">Login</button> 
</form> 
<?php 
    if(isset($_POST["login"])){ 
     echo " 
     <script> 
      document.getElementById('example-element').style.display = 'block'; 
     </script>" 
    } 
?> 

Wenn ich so etwas wie dies zu tun ist, aber (die PHP wird ausgeführt):

<?php 
    if(isset($_POST["login"])){ 
     echo " 
     <script> 
      document.getElementById('example-element').style.display = 'block'; 
     </script>" 
    } 
?> 
<form> 
    <span id="example-element">Displaying.</span> 
    <input type="text" name="example"> 
    <button type="submit" name="login">Login</button> 
</form> 

aber darauf zurückzuführen, wie compiles JavaScript, wird es eine Fehlermeldung, wie werfen sie es nicht einen Stil auf eineinstellenElement.

Ich habe keine Ahnung, wie man dieses Dilemma umgehen kann, also wird jede Hilfe geschätzt!

Prost.

+1

' Anzeigen. '- Die Darstellung mit Javascript wäre nicht erforderlich, PHP kann sich darum kümmern. Eine Annahme hier ist, dass '$ _POST [" login "]' tatsächlich etwas enthält. Wenn eine Variable jedoch tatsächlich am Anfang des Skripts festgelegt ist und während der Ausführung nicht optimiert wird, sollte sie immer noch am Ende des Skripts stehen. –

+0

stimme ich mit Dhruv Saxena, keine js ist notwendig. ' Angezeigt. ";}?>' – mickmackusa

+1

Auch wenn Sie ein- und ausblenden möchten von PHP, warum nicht zeigen und verstecken sich von PHP? ' Anzeige. ' – mplungjan

Antwort

2
<form> 
    <span id="example-element">Displaying.</span> 
    <input type="text" name="example"> 
    <button type="submit" name="login">Login</button> 
</form> 

<?php 
    if(isset($_GET["login"])){ 
     echo "<script> 
     document.addEventListener('DOMContentLoaded', function(){ 
      document.getElementById('example-element').style.display = 'block'; 
     }, false);   
     </script>"; 
    } 
?> 

Überprüfen Sie, ob das funktioniert ..... Ich habe die Anzeige Code innerhalb des DOMContentLoaded Ereignis hinzugefügt und ändern Sie die $_POST Variable $_GET. Funktioniert gut in meinem lokalen System.

+0

Danke! Funktioniert perfekt :) –

0

Sie können es als

<style> 
.someClass { 
    display: block; 
} 
</style> 

<?php 
    if(isset($_POST["login"])){ 
     $hasClass = true; 
    } 
?> 

<form method="post"> 
    <span id="example-element" class=<?php if(isset($hasClass)==true) echo "someClass"; ?> >Displaying.</span> 
    <input type="text" name="example"> 
    <button type="submit" name="login">Login</button> 
</form> 

Das andere Problem mit Ihrem Code folgt, ist, dass Sie nicht Methode des Formulars setzen und standardmäßig ist es GET wo, wie in PHP Sie POST Anfrage suchen. Sie können es entweder mit $_REQUEST in PHP lösen, wenn Sie nicht sicher über die Methode sind.

0

Actally PHP führt vor Javascript.

ändern wie diese

<script> 
     var isSubmit = "<?php isset($_POST['login'])?true:false; ?>"; 
     if(isSubmit){ 
     document.getElementById('example-element').style.display = 'block'; 
     } 
    </script>"