2017-12-29 4 views
0

Ich habe eine einfache AJAX-Funktion an eine Schaltfläche gebunden, die eine PostgreSQL-Abfrage ausführen soll. Wenn ich jedoch auf die Schaltfläche klicke, an die ich die Ajax-Abfrage gebunden habe, bekomme ich nur die Bestätigung, dass die Datenbankverbindung erfolgreich war. . Nichts scheint das Ajax-Ergebnis passieren Withe (sollte in der handleAjax() Funktion trösten werden Drucke Was mache ich falschAJAX-Funktion zum Abrufen von Postgres Daten funktioniert nicht

Dies ist der JavaScript-Code (mit jQuery):

$(document).ready(function() { 

    function sendAjax() { 

     $.ajax({ 
      url: "db/database.php", 
      success: function (result) { 
       handleAjax(result); 
      } 
     }); 
    } 

    function handleAjax(result) { 
     console.log(result); 
    } 

    $("#submit-button").on("click", sendAjax); 

}); 

Und das es dem Inhalt database.php.

<?php 

    function dbconn(){ 

     ini_set('display_errors', 1); // Displays errors 

     //database login info 
     $host = 'localhost'; 
     $port = 5432; 
     $dbname = 'sms'; 
     $user = 'postgres'; 
     $password = 'postgres'; 
     // establish connection 
     $conn = pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password"); 
     if (!$conn) { 
      echo "Not connected : " . pg_error(); 
      exit; 
     } else { 
      echo "Connected."; 
     } 
    } 

    $conn = dbconn(); 
    $sql = "SELECT * FROM numbers;"; 

    $result = pg_query($sql) or die('Query Failed: ' .pg_last_error()); 
    $count = 0; 
    $text = 'error'; 
    while($row = pg_fetch_array($result, null, PGSQL_ASSOC)) { 
     $text = $row['message']; 
     //echo $text; 
    } 
    pg_free_result($result); 

?> 

Antwort

0

das Problem in der database.php Datei ist, alles, was Sie ist „Connected“ erhalten, weil Sie Ihr Ergebnis am Ende nicht gedruckt Ajax die Ausgabe des einzigen erhalten PHP-Datei

So am Ende Ihrer PHP-Datei sollten Sie hinzufügen:

echo $text; 

Und Sie sollten auch die echo "Connected.";

0

Sie entfernen sollten $ conn von dbconn zurückkehren()

if (!$conn) { 
     echo "Not connected : " . pg_error(); 
     exit; 
    } else { 
     echo "Connected."; 
     return $conn; 
    } 
1

AJAX ist kein Zauberstab, der auf magische Weise PHP-Code liest. Angenommen, AJAX ist ein Benutzer. Was macht der Benutzer?

  1. Webseite öffnen
  2. Warten Sie, bis PHP-Code und Anzeige von Daten ausführen
  3. Ihnen sagt, was er

sieht Wenn Sie keine Anzeige mehr, Ajax kann Ihnen nicht sagen, was er sah.

In diesem Fall ist es Wert zu sagen, dass die beste Art, zwischen PHP und AJAX zu kommunizieren, die Verwendung des JSON-Formats ist.


Ihr Code ist im Allgemeinen gut. Sie müssen lediglich Ihre Daten anzeigen. Alle Ihre Daten sind in Ihrem $text var. Lassen Sie uns also Ihr Array ($text) in JSON konvertieren.

Zunächst setzen Sie den Inhaltstyp auf json, damit Ajax weiß, dass er json liest. Dann kodieren (konvertieren) Sie Ihr PHP-Array in das js-freundliche Format (JSON). Lösche auch unnötige Echos wie 'Conntected', denn wie gesagt, AJAX liest alles was er sieht.

Verwandte Themen