用于检索postgres数据的AJAX函数不起作用

问题描述 投票:0回答:3

我有一个简单的AJAX函数绑定到一个应该执行PostgreSQL查询的按钮。但是,当我单击我将ajax查询绑定到的按钮时,我得到的是数据库连接成功的确认。 ajax结果似乎没有发生任何事情(应该在handleAjax()函数中打印到控制台。我做错了什么?

这是javascript代码(使用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);

});

这就是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 );

?>
javascript php jquery ajax postgresql
3个回答
1
投票

问题出在database.php文件中,你得到的只是“已连接”。因为你最后不打印你的结果。 Ajax只接收php文件的输出。

所以在你的php文件的末尾你应该添加:

echo $text;

你也应该删除echo "Connected.";


1
投票

AJAX不是魔术棒,它以神奇的方式读取PHP代码。假设AJAX是一个用户。那么用户做了什么。

  1. 打开网页
  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)。同时删除不必要的回声,如'Conntected',因为正如我所说,AJAX会读取他所看到的一切。


0
投票

你应该从dbconn()返回$ conn

 if (!$conn) {
        echo "Not connected : " . pg_error();
        exit;
    } else {
        echo "Connected.";
        return $conn;
    }
© www.soinside.com 2019 - 2024. All rights reserved.