levoch
Новичок
связка XML-XSLT-PHP-Java
Здравствуйте!
Создаю систему электронного тестирования! Для этого в качестве технологии выбрала xml-xslt. Перед тем как выдать пользователю для прохождения тест создала регистрационную форму со следующими полями: ФИО, mail, телефон, язык теста, программа обучения. При этом программы обучения зависят от выбранного языка. Список языков хранится в xml файле, списки программ хранятся в xml-файлах. При выборе языка (комбобокс) должен открываться второй комбобокс с программами обучения соответствующими выбранному языку. Для этого я подключаю ajax. Всё работает, нужные программы попадают в комбобокс программ, а вот при нажатии на кнопку Начать тест форма не передает значение программы, то есть форма не запоминает выбранного значения в поле программа! Подскажите что я делала не так
регистрационная форма
ajax содержит следующие функции:
файл с выбором языков
Здравствуйте!
Создаю систему электронного тестирования! Для этого в качестве технологии выбрала xml-xslt. Перед тем как выдать пользователю для прохождения тест создала регистрационную форму со следующими полями: ФИО, mail, телефон, язык теста, программа обучения. При этом программы обучения зависят от выбранного языка. Список языков хранится в xml файле, списки программ хранятся в xml-файлах. При выборе языка (комбобокс) должен открываться второй комбобокс с программами обучения соответствующими выбранному языку. Для этого я подключаю ajax. Всё работает, нужные программы попадают в комбобокс программ, а вот при нажатии на кнопку Начать тест форма не передает значение программы, то есть форма не запоминает выбранного значения в поле программа! Подскажите что я делала не так
регистрационная форма
PHP:
$page_data = "
<html>
<body>
<table cellpadding='0' cellspacing='0' width='800px' align='center'>
<tr height='10px'>
<td></td>
</tr>
<tr>
<td><img src='img/logo.jpg'></td>
</tr>
<tr>
<td>
<table class='form_navy' cellspacing='0' cellpadding='0' width='100%'>
<tr>
<td>
<table cellspacing='0' cellpadding='0' width='90%' align='center'>
<tr>
<td colspan='2'><p><b class='navy'>Уважаемые клиенты!</b><p>Представляем вашему вниманию систему электронного тестирования для определения уровня языковой подготовки! <p>Для того чтобы начать тестирование заполните предложенную анкету и нажмите кнопку «Начать тест». Поля отмеченные * <b>обязательны</b> для заполнения.
</td>
</tr>
<form action='index.php?page=1' method='post' name='studentdata'><tr>
<td width='20%'><p><b>ФИО<b><b class='red'>*</b><b>:</b></td><td><input name='fio' type='text' style='width:300px' class='form_white'></td>
</tr>
<tr>
<td><p><b>Телефон<b><b class='red'>*</b><b>:</b></td><td><input name='phone' type='text' style='width:300px' class='form_white'></td>
</tr>
<tr>
<td><p><b>E-mail<b><b class='red'>*</b><b>:</b></td><td><input name='mail' type='text' style='width:300px' class='form_white'></td>
</tr>
<tr>
<td><p><b>Язык<b><b class='red'>*</b><b>:</b></td><td>";
include "mklistlanguage.php";
$page_data=$page_data."$combobox</td>
</tr>
<tr>
<td><p><b>Программа:</b></td>";
$page_data=$page_data."<td><div id='program'></div></td></tr>";
$page_data=$page_data."<tr><td><input type='text' name='program'></div></td></tr>";
$page_data=$page_data."
<tr>
<td><p><b>График занятий:</b></td><td><select name='grafic' style='width:300px' class='form_white'>";
$list="grafic";
include "mklistadd.php";
$page_data = $page_data. "$combobox2</select></td>
</tr>
<tr>
<td><p><b>Форма обучения:</b></td><td><select name='form' style='width:300px' class='form_white'>";
$list="form";
include "mklistadd.php";
$page_data = $page_data. "$combobox2</select></td>
</tr>
<tr>
<td><p><b>Начало занятий:</b></td><td><select name='time' style='width:300px' class='form_white'>";
$list="time";
include "mklistadd.php";
$page_data = $page_data. "$combobox2</select></td>
</tr>
<tr>
<td><p><b>Комментарии, пожелания:</b></td>
<td><textarea name='comment' cols='4' rows='5' style='width:300px' class=form_white></textarea></td>
</tr>
<tr height='10px'>
<td colspan='2'></td>
</tr>
<tr>
<td></td>
<td><input name='ok' type='submit' class='form_navy2' value='Начать тест'></td>
</tr>
</form></table>
</td>
</tr>
<tr height='10px'>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>";
echo $page_data;
PHP:
var AJAX_URL;
var AJAX_Dest;
function processStateChange(){
if (request.readyState == 4){
if (request.status == 200){
if (document.getElementById(AJAX_Dest)) {
contentDiv = document.getElementById(AJAX_Dest);
response = request.responseText;
if (contentDiv.tagName == "DIV") {
contentDiv.innerHTML = response;
} else if (contentDiv.tagName == "IFRAME") {
contentDiv.contentWindow.document.body.innerHTML = response;
} else {
contentDiv.value = response;
}
} else {
eval(AJAX_Dest+"("+response+");");
}
} else {
contentDiv.innerHTML = "Error: Status "+request.status;
}
}
}
function shAJAX() {
AJAX_URL = arguments[0];
AJAX_Func = arguments[1];
AJAX_Dest = arguments[2];
if (AJAX_Func != "") {
POST_Str = "ajax_func=" + encodeURI(AJAX_Func);
for (var i = 3; i < arguments.length; i++) {
POST_Str += "&ajax_func_args[]="+encodeURI(arguments[i]);
}
} else {
POST_Str = "";
}
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
request.open("POST", AJAX_URL, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = processStateChange;
request.send(POST_Str);
} else if (window.ActiveXObject) {
request = new ActiveXObject("Microsoft.XMLHTTP");
request.open("POST", AJAX_URL, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = processStateChange;
request.send(POST_Str);
} else alert("Error!");
}
function get_value() {
AJAX_Dest = arguments[0];
lang = document.getElementById('language').value;
shAJAX("mklist.php?lang="+lang, "", AJAX_Dest);
}
PHP:
<?xml version="1.0" encoding="Windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="menu">
<SELECT name="lang" id="language" onChange='get_value("program")' style="width:300px">
<option>---</option>
<xsl:for-each select="./list">
<OPTION>
<xsl:attribute name="value"><xsl:value-of select="./@id"/></xsl:attribute>
<xsl:value-of select="./@name"/> </OPTION>
</xsl:for-each>
</SELECT>
</xsl:template>
</xsl:stylesheet>