我有一个简单的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 );
?>
答案 0 :(得分:1)
问题出在database.php文件中,你得到的只是“已连接”。因为你最后不打印你的结果。 Ajax只接收php文件的输出。
所以在你的php文件的末尾你应该添加:
echo $text;
您还应删除echo "Connected.";
答案 1 :(得分:1)
AJAX不是一种神奇的魔杖,它以神奇的方式读取PHP代码。假设AJAX是一个用户。那么用户做了什么。
如果你没有显示任何东西,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会读取他所看到的一切。
答案 2 :(得分:0)
你应该从dbconn()
返回$ conn if (!$conn) {
echo "Not connected : " . pg_error();
exit;
} else {
echo "Connected.";
return $conn;
}