Я создаю страницу регистрации для участия в нашем ежегодном конкурсе по математике в моей школе. При щелчке и выборе элемента в раскрывающемся списке требуется поведение, подобное AJAX.
Я получил событие, которое срабатывает, когда я выбираю что-то в раскрывающемся списке (в данный момент я показываю окно с предупреждением):
<script type="text/javascript">
$(function() {
$("#student").change(onStudentChange);
});
function onStudentChange()
{
alert("Dropdown changed");
}
</script>
Что нужно сделать, это выполнить асинхронный вызов на сервер, чтобы получить список конкурсов, на которые в данный момент зарегистрирован студент.
Я знаю, что мне нужно сделать ajax-вызов jquery. Поэтому я думаю, что моя функция 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, и мне трудно понять, как мне вернуть данные, которые база данных дала мне для этого вызова ajax, в формате JSON. Еще одна загвоздка в том, что наша школа использует очень старую версию 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 (test.id ,test.title) и вернуть его обратно в вызов ajax, который сделает его выше.
Если бы кто-нибудь мог указать мне правильное направление, я был бы очень признателен.