gpt4 book ai didi

php - 如何将此 postgres db 查询的结果转换为 json 以返回到我的 jquery 调用?

转载 作者:行者123 更新时间:2023-12-01 02:08:59 25 4
gpt4 key购买 nike

我正在为学校的年度数学竞赛创建竞赛报名页面。当您单击并选择下拉列表中的项目时,它需要一些类似 AJAX 的行为。

当我在下拉列表中选择某些内容时,会触发一个事件(我当前显示一个警报框):

<script type="text/javascript">
$(function() {
$("#student").change(onStudentChange);
});

function onStudentChange()
{
alert("Dropdown changed");
}
</script>

这需要做的是对服务器进行异步调用以获取学生当前注册的比赛列表。

我知道我需要进行 jquery ajax 调用。所以我认为我的 onStudentChange() 函数如下所示:

$.ajax({
type : 'POST',
url : 'get_registered_events.php',
dataType : 'json',
data: {
studentid : $('#student').val()
},
success : function(data){
// Do something once we get the data
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
// Display error
}
});

return false;
});

所以我继续创建了 get_registered_events.php,我想返回学生注册的事件。

我的问题是,我没有使用 PHP 的经验,而且我很难弄清楚如何将数据库提供给我的数据以 JSON 格式返回给这个 ajax 调用。我遇到的另一个障碍是我们学校使用的是非常旧的 PHP 版本,所以我必须使用这个 PEAR JSON图书馆。

这是我遇到问题的 PHP 文件:

<?php

if (!empty($_POST['studentid')) {

include_once('JSON.php');
$json = new Services_JSON();

$dbconn = pg_connect("host=somehost dbname=somedb user=someuser password=somepassword") or die('Could not connect: ' . pg_last_error());
$query = 'SELECT contest.id, contest.title, FROM contest, student_contest WHERE student_id = '.$_POST['studentid'].' AND contest.id = contest_id';
$contests = pg_query($query) or die('Query failed: ' . pg_last_error());

// Here I need to convert the rows of $contests (contest.id, contest.title), into JSON and return it to that ajax call.

}

?>

所以我的问题是,如何将 $contests(其行)转换为 JSON(contest.id、contest.title),并将其返回到上面的 ajax 调用。

如果有人能指出我正确的方向,我将非常感激。

最佳答案

$myarray = array();
while ($row = pg_fetch_row($contests)) {
$myarray[] = $row;
}

echo json_encode($myarray);

我认为这必须有效。

关于php - 如何将此 postgres db 查询的结果转换为 json 以返回到我的 jquery 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1830264/

25 4 0
文章推荐: javascript 正则表达式与 g 标志匹配但不与 y 标志匹配
文章推荐: javascript - 我如何使用 jQuery 显示前 8 个元素?
文章推荐: python - tensorflow 偏差和权重变量
文章推荐: jquery - 如何在深度为1的中找到?