2016-10-19 5 views
-1

Ich versuche eine Website für Schulprojekte zu erstellen. Ich möchte, dass die SchoolResponse() -Funktion nach dem Klicken auf die Schaltfläche Absenden geschehen. Wenn ich die jQuery-Funktion entferne, funktioniert es, aber dann zeigt es einen Standardwert, wenn ich die Seite lade.Wie führe ich meinen PHP-Code auf Knopfdruck?

Hier ist mein Code:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>NHG</title> 
    <meta charset="UTF-8"/> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 
    <link type="text/css" rel="stylesheet" href="css/normalize.css"/> 
    <link type="text/css" rel="stylesheet" href="css/style.css"/> 
    <link type="text/css" rel="stylesheet" href="css/resposive.css"/> 
    </head> 
    <body> 
    <header> 
      <div id="main-head"> 
       <a href="#"><h2 id="main-heading">sKoolBook</h2></a> 
      </div> 
    </header> 
    <section> 
     <div id="container"> 
     <div id="wrapper"> 
      <form method="POST"> 
      <select name="school"> 
       <option value="none" name="none">Please Select a School...</option> 
       <option value="NHG">New Horizon Gurukul</option> 
      </select> 
      <input type="submit" class="button"/> 
      <?php 
       error_reporting(0); 
       $school = $_POST['school']; 
       function schoolResponse() { 
       if ($_POST['school'] == 'none'){ 
        echo 'nothing'; 
       } else { 
        echo 'something'; 
       } 
       } 
      ?> 
      <script> 
       $('.button').click(
       function(
        <?php schoolResponse(); ?> 
       ); 
      ); 
      </script> 
      </form> 
     </div> 
     </div> 
    </section> 
    <footer> 
    </footer> 
    </body> 
</html> 
+1

Server-Seite und Client-seitige Sprachen tun sollten keine Variablen interagieren oder teilen. PHP läuft auf dem Server und generiert HTML und JavaScript, die später auf einem komplett anderen Computer ausgeführt werden. –

+0

Ich habe verstanden, dass ich nur eine Lösung zu fragen, um die SchoolResponse() -Funktion auf den Klick auf die Schaltfläche Senden ausführen. Ich will nur so viel wissen. –

+0

Dazu müssen Sie die Seite erneut an den Server senden, damit sie erneut mit den neuen Werten ausgeführt wird (z. B. über ein Formular) oder einen AJAX-Aufruf an ein separates Skript senden und den Wert dort einspeisen, wo Sie ihn brauchen. –

Antwort

0

Sie können es so nicht erreichen. Hier ist eine Lösung:

  <?php 
      error_reporting(0); 
      $school = $_POST['school']; 
      function schoolResponse() { 
      if ($_POST['school'] == 'none'){ 
       echo 'nothing'; 
      } else { 
       echo 'something'; 
      } 
      } 

      if($_POST['school']) schoolResponse(); 

     ?> 

Es wäre besser, wenn Sie error_reporting(0); mit error_reporting(E_ALL); zum Beispiel ersetzen, da sonst PHP-Fehler deaktiviert.

Und entfernen Sie diesen Teil:

 <script> 
      $('.button').click(
      function(
       <?php schoolResponse(); ?> 
      ); 
     ); 
     </script> 

Aber es ist sehr sehr einfaches Beispiel.

+2

'error_reporting (0); 'deaktiviert die Fehlerberichterstattung. Du hast wahrscheinlich 'error_reporting (E_ALL); 'gemeint. –

+0

mit error_reporting (E_ALL); es wird besser ... nur ein Teil des Codes in der Frage verwendet ... möglicherweise @Shreyas Sreenivasa benötigt error_reporting (0), ich weiß es nicht, aber danke für den Kommentar – krasipenkov

0

Sie sollten dazu jQuery/AJAX verwenden.

<script> 
        $('.button').click(
        $.ajax({ 
         url: 'yoururl.php', 
         data: $("form").serialize(), //Better to put an ID to the form or something 
         success: function(data){ 
          //DO something with your data 
        } 

     }) 
       ); 
       </script> 

Es gibt andere Funktionen, die Sie überprüfen sollten, um Ajax-Anfragen ordnungsgemäß zu verwenden.

In yoururl.php Sie so etwas wie

$school = $_POST['school']; 
      function schoolResponse() { 
      if ($_POST['school'] == 'none'){ 
       echo 'nothing'; 
      } else { 
       echo 'something'; 
      } 
      } 
+0

Besser, eine ID in das Formular zu setzen oder etwas, meinst du wie eine ID in die Form setzen und dort eingeben? Was soll ich mit meinen Daten machen? –

+0

Update: Über welche Daten sprechen Sie? Der in der yoururl.php? –

+0

Es ist besser, eine ID in das Formular zu schreiben. Wenn also mehr Formulare in der Ansicht vorhanden sind, stellen Sie sicher, dass Sie die gewünschte Datei senden. –

Verwandte Themen