2016-12-15 7 views
-1

Ich möchte JavaScript-Variable an PHP übergeben, aber es ist nie festgelegt. Ich habe alles in einer Php-DateiPass Javascript Variable zu PHP

Code:

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <link rel="stylesheet" type="text/css" href="asd.css"> 
    <title>Tabulka</title> 
</head> 
<body> 

<script> 
$(document).ready(function(){ 
    $("#table tr").click(function(){ 
     $(this).addClass('selected').siblings().removeClass('selected'); 

     var value = $("#table tr.selected td:first").html(); 

     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.open("GET", "tabulka.php?id=" + value, true); 
     xmlhttp.send(); 
    }); 
}); 
</script> 
<table id="table"> 
    <tr> 
     <th>A</th> <th>A</th> <th>B</th> <th>C</th> <th>D</th> 
    </tr> 

    <tr> 
     <td>51</td> <td>41</td> <td>1515</td> <td>419</td> <td>asd</td> 
    </tr> 

    <tr> 
     <td>52</td> <td>41</td> <td>1515</td> <td>419</td> <td>asd</td> 
    </tr> 

    <tr> 
     <td>63</td> <td>41</td> <td>1515</td> <td>419</td> <td>asd</td> 
    </tr> 
</table> 

<form method="POST"> 
    <input type="submit" name="ok-submit" class="ok" value="OKOK"> 
</form> 
</body> 
</html> 


<?php 
if(isset($_REQUEST['id'])){ 
    echo $_REQUEST['id']; 
} 
?> 

Ich bin mit XMLHttpRequest Variable zu übergeben. Es funktioniert wie Wenn ich auf die Tabellenzeile klicke. Zuerst wird td an die PHP Variable übergeben und ausgedruckt. Aber er $ _REQUEST ['id'] wird nie gesetzt.

+0

Nein, das ist nicht wie es funktioniert. – Phiter

+0

Die Datei, die Ajax-Antworten zurückgibt, muss eine separate Datei von der sein, die die Anfrage stellt, oder Sie könnten Konditionale verwenden, aber das wäre hässlich. – Phiter

+3

Mögliches Duplikat von [Wie man JavaScript-Variablen an PHP weitergibt?] (Http://stackoverflow.com/questions/1917576/how-to-pass-javascript-variables-to-php) –

Antwort

0

Es ist möglich, auf einem anderen Seite von Daten über JavaScript passieren, um Server-Seite von PHP gehandhabt werden, um ein Ergebnis zu bauen und sie dann auf der aktuellen Seite anzuzeigen, wo die JavaScript befindet. Es ist ziemlich glatt und erfordert keine Seitenaktualisierung oder ein Formular, um eingereicht zu werden.

Mein Beispiel unten ist eine einfache Suchfunktion. Der Benutzer gibt eine Abfragezeichenfolge ein und trifft die Suche. Der Inhalt des Textfelds wird an eine JavaScript-Funktion übergeben, die an eine PHP-Seite übergeben wird, die eine Datenbankabfrage ausführt (oder tut, was immer Sie wollen), HTML-Code erstellt und diesen HTML-Code dann auf der aktuellen Seite des Benutzers ausgibt. In diesem Fall wird er als innerHTML- in diesem div-Dump:

<div id='studentResults'></div> 

Dies ist die HTML:

<div id='quickStudentLookup'> 
     <div> 
      <p>Quick Search</p> 
     </div> 

     <div> 
      <input id='queryString' name='queryString' type='text' placeholder='First OR Last Name' /> 
      <input type='submit' value='Search' onclick="javascript:ajax_post();" /> 

     <div id='studentResults'></div> 
     </div> 
    </div> 

Javascript:

function ajax_post(){ 
     // Create our XMLHttpRequest object 
     var hr = new XMLHttpRequest(); 

     var url = "studentSearch.php"; // this is a file that would take the queryString, perform something on it and echo some HTML back. The HTML will end up as innerHTML of the div id studentResults 

     // Create some variables we need to send to our PHP file 
     var queryString = document.getElementById("queryString").value; 
     var vars = "queryString="+queryString; 
     hr.open("POST", url, true); 

     // Set content type header information for sending url encoded variables in the request 
     hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     // Access the onreadystatechange event for the XMLHttpRequest object 
     hr.onreadystatechange = function() { 

      if(hr.readyState == 4 && hr.status == 200) { 
       var return_data = hr.responseText; 
       document.getElementById("studentResults").innerHTML = return_data; 
      } 
      else{ 

      } 
     } 
     // Send the data to PHP now... and wait for response to update the status div 
     hr.send(vars); // Actually execute the request 
} 

PHP: kann das sein, was Sie wollen . Hier ist ein einfaches Beispiel, das die Daten aufnimmt, eine Datenbank abfragt und ein Echo liefert. Das Echo wird innerhalb des DIV mit ID studentResults passieren. Dies ist im obigen JS definiert.

<?php 
     // database connection omitted 
     $queryString = $_POST['queryString']; // get var from post 

     $studentSearch = "SELECT 
     student.student_id, 
     student.firstName, 
     student.lastName, 
     student.studentID 
     FROM 
     student 
     WHERE student.lastName = :queryString 
     LIMIT 10"; // build query 

     $sth = $handler->prepare($studentSearch); // pdo to run query 
     $sth->execute(array(':queryString'=>$queryString)); 
     $results = $sth->fetchAll();     

     foreach($results as $r){ // loop through results and output 
      $firstName  = $r['firstName']; 
      $lastName   = $r['lastName']; 
      $studentID  = $r['studentID']; 

      echo "<p>$firstName $lastName - $studentID</p>"; 

     } 

?> 

Hoffe es hilft!

0

Sie können keine Variablenwerte von der aktuellen Seite Javascript an die aktuelle Seite übergeben PHP-Code ... PHP-Code läuft auf dem Server und es weiß nichts darüber, was auf der Client-Seite passiert.

Sie müssen Variablen an PHP-Code von HTML-Formular mit einem anderen Mechanismus übergeben, z. B. Formular bei GET oder POST-Methoden absenden.

<DOCTYPE html> 
<html> 
    <head> 
    <title>My Test Form</title> 
    </head> 

    <body> 
    <form method="POST"> 
     <p>Please, choose the salary id to proceed result:</p> 
     <p> 
     <label for="salarieids">SalarieID:</label> 
     <?php 
      $query = "SELECT * FROM salarie"; 
      $result = mysql_query($query); 
      if ($result) : 
     ?> 
     <select id="salarieids" name="salarieid"> 
      <?php 
      while ($row = mysql_fetch_assoc($result)) { 
       echo '<option value="', $row['salaried'], '">', $row['salaried'], '</option>'; //between <option></option> tags you can output something more human-friendly (like $row['name'], if table "salaried" have one) 
      } 
      ?> 
     </select> 
     <?php endif ?> 
     </p> 
     <p> 
     <input type="submit" value="Sumbit my choice"/> 
     </p> 
    </form> 

    <?php if isset($_POST['salaried']) : ?> 
     <?php 
     $query = "SELECT * FROM salarie WHERE salarieid = " . $_POST['salarieid']; 
     $result = mysql_query($query); 
     if ($result) : 
     ?> 
     <table> 
      <?php 
      while ($row = mysql_fetch_assoc($result)) { 
       echo '<tr>'; 
       echo '<td>', $row['salaried'], '</td><td>', $row['bla-bla-bla'], '</td>' ...; // and others 
       echo '</tr>'; 
      } 
      ?> 
     </table> 
     <?php endif?> 
    <?php endif ?> 
    </body> 
</html> 
+0

Danke das wird helfen. –