至少需要把 var show=document.getElementById("info"); 放在回调函数中
恩恩,你说的对(我Js基础不是很好==),我按照您说的改了,然后按步骤调试了下:<?php //从数据库把班级名称取出来放入下拉列表中 mysql_connect("localhost","root","root") or die("数据库连接失败"); mysql_select_db("studentmanage") or die("数据库不存在");
mysql_connect("localhost","root","root") or die("数据库连接失败"); mysql_select_db("studentmanage"); mysql_query("set names utf-8"); $sql="select * from student where cid='$class'"; //$sql="select * from student where cid=3"; $rs=mysql_query($sql); $info=array(); while($row=mysql_fetch_assoc($rs)){ $info[]=$row; }
$result="<table><tr><td>学号</td><td>姓名</td><td>住址</td><td>班级</td></tr>"; foreach($info as $v){ $result.="<tr><td>{$v['sid']}</td><td>{$v['name']}</td><td>{$v['address']}</td><td>{$v['cid']}</td></tr>"; } $result.="</table>"; echo $result; ?>
不能直接返回带输出内容,要用 json_encode 处理返回的数据如:查表中的数据出来放到一数组中,然后:echo json_encode($arr);
你需要的应该是innerHTML
ajax不是有三种返回格式吗?分别为text, xml,json
我这里用的是text格式,我不知道这有什么错误
恩恩,你说的对(我Js基础不是很好==),我按照您说的改了,然后按步骤调试了下:<?php
//从数据库把班级名称取出来放入下拉列表中
mysql_connect("localhost","root","root") or die("数据库连接失败");
mysql_select_db("studentmanage") or die("数据库不存在");
$sql="select * from class";
$rs=mysql_query($sql);
$info=array();
while($row=mysql_fetch_assoc($rs)){
$info[]=$row;
}?>
<!doctype html>
<html>
<head>
<title>查询学生信息</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<style type="text/css">
</style>
<script type="text/javascript">
var xmlhttprequest;;
function getMessage(){
if(window.ActiveXObject){
xmlhttprequest=new ActiveXObject("Microsoft.XMLHTTP");
}else{
xmlhttprequest=new XMLHttpRequest();
}
if(xmlhttprequest){
var url="result.php";
var cid=document.getElementById("class").value;
//window.alert(cid);
var show=document.getElementById("info");
//window.alert(show);
var data="class="+cid;
//window.alert(data);
xmlhttprequest.open("post",url,true);
xmlhttprequest.setRequestHeader("content-type","application/x-www-form-urlencode");
xmlhttprequest.onreadystatechange=function(){
if(xmlhttprequest.readyState==4){
if(xmlhttprequest.status==200){
var info=xmlhttprequest.responseText;
if(info==""){
show.innerHTML="你好,你查询的班级暂时还没有学生";
}else{
show.innerHTML=info;
}
}
}else{
window.alert("error");
}
}
xmlhttprequest.send(data);
}
}
</script>
</head>
<body>
<div id="content">
<h1>
请选择班级:
<select name="class" id="class" onchange="getMessage()">
<option value="" selected>choose class</option>
<?php foreach($info as $v){?>
<option value="<?php echo $v['cid'];?>"><?php echo $v['cname'];?></option>
<?php }?>
</select>
</h1>
<div id="info">aaa</div>
</div>
</body>
</html>下拉列表的值通过js取到了,我用window.alert(data)调试的时候没有问题
但是在result.php中通过$class=$_POST['class']取值的时候$class没有被赋值,因为我通过file_put_contents("D:/WWW/PHPDemo/log.log",$class."\r\n",FILE_APPEND);把$class的值保存在log.log文件中,但我运行后
打开时这个文件为空,且运行报错,说:Notice: Undefined index: class in D:\WWW\dbDesign\project\result.php on line 5
我想问下我的ajax通过POST传值的 方式有错误吗??
<?php
//header("content-type:text/html;charset=utf-8");
header("Content-type:text/xml;charset=utf-8");
header("Cache-Control:no-cache");
$class=$_POST['class'];
file_put_contents("D:/WWW/PHPDemo/log.log",$class."\r\n",FILE_APPEND);
mysql_connect("localhost","root","root") or die("数据库连接失败");
mysql_select_db("studentmanage");
mysql_query("set names utf-8");
$sql="select * from student where cid='$class'";
//$sql="select * from student where cid=3";
$rs=mysql_query($sql);
$info=array();
while($row=mysql_fetch_assoc($rs)){
$info[]=$row;
}
$result="<table><tr><td>学号</td><td>姓名</td><td>住址</td><td>班级</td></tr>";
foreach($info as $v){
$result.="<tr><td>{$v['sid']}</td><td>{$v['name']}</td><td>{$v['address']}</td><td>{$v['cid']}</td></tr>";
}
$result.="</table>";
echo $result;
?>
不知道有什么js调试工具能调试出这种错误,就不用这么费时间找BUG了。做程序员千万不能粗心,以此共勉
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
var cid=document.getElementById("class").value;
var show=document.getElementById("info");
$.post("result.php", { class: cid },
function(info){
if(info==""){
show.innerHTML="你好,你查询的班级暂时还没有学生";
}else{
show.innerHTML=info;
}
},"text"
);
</script>
http://api.jquery.com/jQuery.post/
js才入门,我js基础很差的,我想把js基础打好点再用框架