2017-08-23 1 views
-1

Was ist falsch an diesem Code? Es tut nichts.Verwenden von PHP zum Aufrufen von JavaScript-Funktion

Ab sofort funktioniert die $_GET gut und erhält alle Rückgabewerte von der Serverseite. Alle Daten sind verfügbar: $ _GET ['PNREF']; & $ _GET ['EMAIL']; empfange Daten in Ordnung, wenn ich sie außerhalb der if-Anweisung habe.

<?php 

if($_GET['RESPMSG'] != "Approved"){ 

    echo '<script type="text/javascript">', 
    'declined();', 
    '</script>'; 

}else{ 

    echo '<script type="text/javascript">', 
    'approved();', 
    '</script>'; 

    $tranid = $_GET['PNREF']; 
    $email = $_GET['EMAIL']; 
} 

?> 

Ich versuche, diese beiden Funktionen in der ich würde erwarten, <body>

<script> 

function approved(){ 
    alert("approved func"); 
    document.getElementById('oops_id').style.display = "none"; 
    document.getElementById('thank_id').style.display = "block"; 

} 
function declined(){ 
    alert("declined func"); 
    document.getElementById('thank_id').style.display = "none"; 
    document.getElementById('oops_id').style.display = "block"; 
} 

</script> 
+0

Wie werden die beiden JS-Funktionen in der Seite enthalten? – nnnnnn

+0

Haben Sie einfach zwischen

1

sich für den Zugriff auf keine Aktion von Ihrem Skript.

PHP wird auf Ihrem Server ausgeführt, während Javascript auf dem Client ausgeführt wird.

In Ihrer PHP if Aussage, Sie sind nur einschließlich der Funktionsaufruf einmal ausgeführt werden, während die Seite (asynchron) geladen ist.

Sie müssen die Funktion declined() oder approved() in einem JavaScript-Skript aufrufen, basierend auf einer Benutzerinteraktion.

Ich müsste mehr Code sehen, um mehr Empfehlungen als das zu machen.

+0

Dieses Formular empfängt Daten erfolgreich von $ _GET - ich habe getestet. Und ich weiß sicher $ _GET ['PNREF']; & $ _GET ['EMAIL']; Werte erhalten Ich hoffte also, dass mein Problem nur in einer schlechten if-Aussage lag. – NewCodeMan

+0

Ja, aber Sie benötigen ein JavaScript-Skript, um die Funktionen aufzurufen. Sie haben derzeit PHP nur den Funktionsaufruf enthalten. Zum Beispiel können Sie eine Taste auswählen, um ein 'on_click'-Ereignis zu haben, bei dem THEN die entsprechende Funktion aufruft. Dies würde nur auf dem Client (innerhalb des Webbrowsers) auftreten. Nichts würde zur Verarbeitung an PHP zurückgesendet werden. Bitte überprüfen Sie das Client-Server-Modell: https://en.wikipedia.org/wiki/Client%E2%80%93Server_Model – Sablefoste

+0

Aktualisierte Frage – NewCodeMan

0

Sie sollten vielleicht überdenken, wie Sie das angehen: Sie können den Stil des Elements direkt als "display: none" oder "display: block" basierend auf der Anforderungsvariablen markieren.

<?php 
    $declined = $_GET['RESPMSG'] != 'Approved'; 
?> 

dann in den HTML-Code:

<div id="thank_id" style="display: <?php echo $declined ? "none" : "block"; ?>;"> 
    <!-- thank div contents here --> 
</div> 
<div id="oop_id" style="display: <?php echo $declined ? "block" : "none"; ?>;"> 
    <!-- oop div contents here --> 
</div> 

Wenn Sie wirklich ausführen möchten Ihre JavaScript-Funktionen haben, können Sie die Seite ausführen, um Ihre Funktion haben können, wenn die Körper Lasten der PHP-Abschnitt oben mit um festzustellen, welche Funktion ausgeführt werden soll:

<body onLoad="<?php echo $declined ? "declined();" : "accepted();"; ?>"> 
+0

Danke @Cubis Ich werde versuchen zu vereinfachen, was ich mit Ihrem Vorschlag habe. – NewCodeMan

Verwandte Themen