связка XML-XSLT-PHP-Java

levoch

Новичок
связка XML-XSLT-PHP-Java

Здравствуйте!
Создаю систему электронного тестирования! Для этого в качестве технологии выбрала 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>Для того чтобы начать тестирование заполните предложенную анкету и нажмите кнопку &laquo;Начать тест&raquo;. Поля отмеченные&nbsp;*&nbsp;<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;
ajax содержит следующие функции:

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>
 

FB3

Новичок
В работающем варианте залей куда-нибудь.
Так вряд ли кто-то будет разбираться.

Ну и одну ошибку вижу, которая вряд ли влияет на результат:
Код:
$page_data=$page_data."<tr><td><input type='text' name='program'></div></td></tr>";
Здесь див не открыт, но закрывается.

Опять же, нет файла, который генерирует данные программы.
 

levoch

Новичок
работающий инструмент можно посмотреть тут: http://lci.tpu.ru/cosmotests/, там в пустое поле типа техт я заливаю значение на изменение комбобокса Программа, а он мне пишет что значение не определено

-~{}~ 16.07.10 06:48:

Интересен тот факт, что в браузере IE у меня скрипт срабатывает! И значение программ передается как надо, проблема возникает когда я открываю данный скрипт в Chrome или Opera, тут и возникает ошибка! Вот теперь не знаю как мне это обойти!
 
Сверху