2017-12-29 17 views
0

PostgreSQLクエリを実行するボタンにバインドされた単純なAJAX関数があります。しかし、私がAjaxクエリーをバインドしたボタンをクリックすると、データベース接続が成功したという確認が表示されます。 。何も(私が間違って何をやっているhandleAjax()機能にコンソールに印刷されなければならないAjaxの結果を小枝起きていないようにみえPostgresデータを取得するためのAJAX関数は動作しません。

これは()jQueryを使ってJavaScriptコードです:?

$(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); 

}); 

そして、これは、それ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); 

?> 

答えて

0

問題はあなたが得るすべては、database.phpでファイル内にある、あなたが最後にあなたの結果を印刷していないので、Ajaxはだけの出力を受け取る「接続されています。」。 PHPファイル

だからあなたのphpファイルの末尾に追加する必要があります

echo $text; 

そして、あなたはまた、あなたがdbconn(から$ CONNを返す必要がありますecho "Connected.";

0

を削除する必要があります)

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

AJAXをさ魔法の方法でPHPコードを読む魔法の杖ではありません。 AJAXがユーザーだとしましょう。では、ユーザーは何をしていますか?

  1. オープンWebページ
  2. 待ちPHPは
  3. コードや表示データを実行するまで、あなたは何も表示されない場合は、Ajaxはあなたが何を彼言うことができない彼は

を見ているかを表示します見た。

ここでは、PHPとAJAXの間で通信する最も良い方法はJSON形式を使用していると言っても過言ではありません。


あなたのコードは概して良好です。あなたがしなければならないことは、あなたのデータを表示することだけです。すべてのデータは$text varにあります。では、配列($text)をJSONに変換してみましょう。

header('Content-Type: application/json'); 
echo json_encode($text); 

まず、content-typeをjsonに設定します。したがって、ajaxはjsonを読み込むことがわかります。次に、PHP配列をJSフレンドリ形式(JSON)にエンコード(変換)します。また、私が言ったように、AJAXは彼が見るものすべてを読み込むので、「Conntected」のような不要なエコーを削除します。

関連する問題