我的问题是每当我运行index.html文件时,ajax的结果太快而页面重新加载。因此,最后在DIV元素中没有显示输出。
Html Page(index.html)
<!DOCTYPE HTML>
<HEAD>
<script src="ajax.js"></script>
</HEAD>
<BODY>
<FORM onSubmit='sendEmpID(this.roll)' action='index.html'>
<input id='roll' type='text'>
<button type="submit">Submit</button>
</FORM>
<P>
<DIV id="emp"><B>Employee info will be listed here.</B></DIV>
</P>
</BODY>
</HTML>
因此遵循ajax代码:
var xmlHttp;
function sendEmpID(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return;
}
var url="getemployee.php";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null); }
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("emp").innerHTML=xmlHttp.responseText;
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
xmlHttp=new XMLHttpRequest();
return xmlHttp;
}
这是PHP部分(getemployee.php)
<html>
<head>
<?php
$q=$_GET["q"];
$con = mysql_connect('localhost', 'root');
if (!$con)
{
die('Not able to connect: ' . mysql_error());
}
mysql_select_db("emp", $con);
$query="SELECT * FROM ajax_example WHERE ID = '".$q."'";
$result = mysql_query($query);
echo "<table border='1'>
<tr>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
<th>WPM</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['age'] . "</td>";
echo "<td>" . $row['sex'] . "</td>";
echo "<td>" . $row['wpm'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
</head>
</html>
数据库内容:
ID name age sex wpm
1 Frank 45 male 87
2 Jerry 23 male 20
3 Jill 22 female 72
4 Julie 35 female 90
5 Regis 75 male 44
6 Tracy 27 female 0
所以每当我运行index.html并在输入中插入1并按下提交。 没有结果显示。经过几次尝试后,我注意到桌子出现但是消失得太快了。 请告诉我是否在ajax代码中设置了计时器,或者我的代码中存在任何问题。
感谢。