Нужна ваша помощь по ajax!
11 сообщений
#16 лет назад
Вроде код написал,а в чем ошибка понять не могу.Суть в следущем
Я из списка выбираю страну,а города должны подгружаться асинхронно.
Вот код:
index.php
<html>
<head>
<title>Страны</title>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
Страны
<select id="myName">
<?
$host="localhost";
$user="root";
$pass="";
$dbname="places";
function conn()
{
global $conn, $host, $user, $pass, $dbname;
$conn=mysql_connect($host,$user,$pass);
mysql_select_db($dbname);
}
conn();
$sql=mysql_query("SELECT * FROM country ORDER BY country_rus");
while($o=mysql_fetch_array($sql))
{
echo("<option value=\"$o\" onclick=\"process();\">$o($o)</option>");
}
?>
</select>
<div id="divMessage">
</body>
</html>
script.php
<?
header("Content-Type:text/xml");
print("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");
print("<response>");
$host="localhost";
$user="root";
$pass="";
$dbname="places";
function conn()
{
global $conn, $host, $user, $pass, $dbname;
$conn=mysql_connect($host,$user,$pass);
mysql_select_db($dbname);
}
conn();
$sql=mysql_query("SELECT * FROM regions WHERE country_id=".$id."");
while($o=mysql_fetch_array($sql))
{
echo '<a href="sample.php?region='.$o.'">'.$o.' ('.$o.')</a><br>
';
}
print("</response>");
?>
script.js
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;
if(window.ActiveXObject)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlHttp=false;
}
}
else
{
try
{
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
xmlHttp=false;
}
}
if(!xmlHttp)
{
alert("Ошибка создания обьекта");
}
else
{
return xmlHttp;
}
}
function process(){
if(xmlHttp.readyState==4 || xmlHttp.readyState==0)
{
strana=encodeURIComponent(document.getElementById("myName").value);
xmlHttp.open("GET","sample.php?id="+strana,false);
xmlHttp.onreadystatechange=handleServerResponse;
xmlHttp.send(null);
}
else
{
setTimeout('process()',1000);
}
}
function handleServerResponse()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
xmlResponse=xmlHttp.ResponseXML;
xmlDocumentElement=xmlResponse.documentElement;
message2=xmlDocumentElement.firstChild.data;
document.getElementById("divMessage").innerHTML='<i>'+message2+'</i>';
setTimeout('process()',1000);
}
}
else
{
alert('Проблемы!'+xmlhttp.statusText);
}
}
Буду благодарен если кто-нибудь найдет ошибку(и).
Спасибо!
115 сообщений
#16 лет назад
Мне кажется, нужно заключить список городов, выводимый script.php в блок CDATA .
<?
header("Content-Type:text/xml");
print("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>");
print("<response><!
$host="localhost";
$user="root";
$pass="";
$dbname="places";
function conn()
{
global $conn, $host, $user, $pass, $dbname;
$conn=mysql_connect($host,$user,$pass);
mysql_select_db($dbname);
}
conn();
$sql=mysql_query("SELECT * FROM regions WHERE country_id=".$id."");
while($o=mysql_fetch_array($sql))
{
echo '<a href="sample.php?region='.$o.'">'.$o.' ('.$o.')</a><br>
';
}
print("]]></response>");
?>
Строки, которые нужно заменить, я выделил.
А что происходит сейчас при попытке запустить?