2015-05-27 11 views
5

Warum funktioniert das nicht? Dies ist die erste Sache im Körper:Wie benutzt man ein jQuery-Objekt von PHP?

<?php 
    if(isset($_POST['submit'])){ 
     echo "<script>$('.classToShow').show();</script>"; 
    }else{ 
     echo "<script>$('.classToShow').show();</script>"; 
    } 
?> 

classToShow ist ein einfaches div im Körper. Es wird nicht angezeigt, und seine Abhängigkeit nicht auf dem boolean Zustand, muss der Code ...

Während dies funktioniert:

<?php 
    if(isset($_POST['submit'])){ 
     echo "<script>alert('works');</script>"; 
    }else{ 
     echo "<script>alert('works');</script>"; 
    } 
?> 

So die einfache JavaScript funktioniert, aber die jQuery nicht ... Warum ist das?

+1

Was die Fehler in der JavaScript-Konsole sind? – Adon

+1

Probieren Sie es aus wie 'echo ""; ' – Satpal

+0

Adon: Ich bin neu sowohl zu JavaScript und NetBeans, so Ich weiß nicht, wo ich suchen soll, NetBeans gibt keine Fehlermeldungen ... Satpal: Ich versuche es – user3435407

Antwort

5

Das ist Ihr Problem:

Dies ist das erste, was in dem Körper

An diesem Punkt wird das Element mit der Klasse von classToShow noch nicht existiert, so geschieht nichts. Sie sollten warten, bis das DOM bereit ist, bevor Sie diesen Code ausführen.

Auf der anderen Seite, wenn Sie nur etwas anzeigen möchten, wenn eine POST-Anfrage gemacht wurde, können Sie es direkt mit PHP hinzufügen und Sie brauchen jQuery nicht, um dies später zu tun.

Eine allgemeine Lösung wäre es, es direkt mit PHP zu zeigen und dann Javascript zu verwenden, um die Nachricht nach einer bestimmten Zeitüberschreitung auszublenden.

+0

Richtig, wenn das so einfach ist wie es scheint, brauchen Sie Javascript nicht, um es zu verstecken. Sie können einfach Folgendes verwenden: ' "; } ?> ' – Adon

+1

jep, ist deine Antwort zusammen mit Satpal Kommentar die Lösung! thx, ich litt seit einer Weile darunter ... – user3435407

+0

Wenn ich dich fragen darf, könntest du darauf hinweisen, was du mit der PHP-Lösung meintest? – user3435407

1

können Sie $(document).ready() verwenden und im Inneren, die den Code schreiben