###ex11_1_main.php <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>AJAX Example</title>
<script>
//AJAX初始化函数
function GetXmlHttpObject()
{
var XMLHttp=null;
try
  {
XMLHttp=new XMLHttpRequest();
  }
catch (e)
  {
  try
   {
  XMLHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
catch (e)
  {
   XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
  }
return XMLHttp;
}
function cj_query()
{
XMLHttp=GetXmlHttpObject(); //初始化一个XMLHttpRequest对象
//得到学号和课程名文本框中输入的值
var XH=document.getElementById("XH").value;
var KCM=document.getElementById("KCM").value;
var url="EX11_1_process.php"; //服务器端在EX11_1_process.php中处理
url=url+"?XH="+XH+"&KCM="+KCM;  //url地址,以GET方式传递
url=url+"&sid="+Math.random();   //添加一个随机数,以防服务器使用缓存的文件
XMLHttp.open("GET",url, true);     //以GET方式通过给定的url打开XMLHTTP对象
XMLHttp.send(null);        //向服务器发送HTTP请求,请求内容为空
XMLHttp.onreadystatechange = function() //定义响应处理函数
{
if (XMLHttp.readyState==4&&XMLHttp.status==200) 

//如果请求成功则在CJ文本框中显示EX9_1_process.php传回的信息
document.getElementById("CJ").value=XMLHttp.responseText;
}    
}
}
</script>
</head>
<body>
<form action="">
学号:<input type="text" name="XH" size="12">
课程名:<input type="text" name="KCM" size="12">
<input type="button" value="查询" onclick="cj_query();"><br>
成绩:<input type="text" name="CJ" size="12">
</form>
</body>
</html>
###ex11_1_process.php
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
$XH=$_GET['XH']; //取得XH的值
$KCM=$_GET['KCM']; //取得KCM的值
header('Content-Type:text/html;charset=gb2312'); //发送header,将编码设为gb2312
$conn=mysql_connect("localhost","root",""); //连接MySQL服务器
mysql_select_db("PXSCJ",$conn); //选择PXSCJ数据库
//mysql_query("SET NAMES gb2312"); //将字符集设为gb2312
mysql_query("SET NAMES uft8"); //将字符集设为gb2312
//查询成绩的SQL语句
$sql="select 成绩 from CJB where 学号='$XH' and 课程号=(select 课程号 from KCB where 课程名='$KCM')";
$result=mysql_query($sql) or die(mysql_error());;
$row=mysql_fetch_array($result);
if($row)
echo $row['成绩']; //输出课程成绩
else
echo "无此成绩";
?>
######mysql
mysql> select * from cjb;
+------+--------+------+
| 学号 | 课程号 | 成绩 |
+------+--------+------+
| 001  | 001    |   99 |
| 002  | 002    |   69 |
| 004  | 004    |   89 |
+------+--------+------+
3 rows in set (0.00 sec)mysql> select * from KCB;
+--------+----------+----------+------+------+
| 课程号 | 课程名   | 开课学期 | 学时 | 学分 |
+--------+----------+----------+------+------+
| 001    | 高等数学 |        1 | NULL |   90 |
| 002    | 大学英语 |        1 | NULL |   70 |
| 004    | 说       |        4 |   10 |   10 |
| 12     | gg       |        2 |    1 |   10 |
+--------+----------+----------+------+------+
问题,当在main.php 输入学号001, 课程名:高等数学,点击 查询,成绩 一栏却没有任何输出,也没报错,该如何调试?

解决方案 »

  1.   

    第一步
    浏览器地址栏:http://localhost/ex11_1_process.php?XH=001&KCM=高等数学
    看看结果是什么第二步
    ex11_1_process.php
    <?php
    print_r($_GET);
    exit;
    //你原来的代码
    看看输出了什么
    如果依然无输出,在表示 ajax 并未提交
      

  2.   

    1.我估计是sql语句的问题,直接把sql返回出来,看看
    $result=mysql_query($sql) or die(mysql_error());;
    如果是sql的问题,这里直接就die了,代码就不执行了,也就没有返回值2.ps头回看见字段中文的。。
      

  3.   

    前端的ajax没问题
      

  4.   

    第一步
    浏览器地址栏:http://localhost/ex11_1_process.php?XH=001&KCM=高等数学
    看看结果是什么--》 结果正常,有数值输出第二步
    ex11_1_process.php
    PHP code
    ?
    1
    2
    3
    4
    <?php
    print_r($_GET);
    exit;
    //你原来的代码看看输出了什么
    如果依然无输出,在表示 ajax 并未提交--> 没有任何输出,应该是ajax 并未提交,请问该如何处理。非常感谢!
      

  5.   

    Firefox 按F12 
      

  6.   

    <form action="">
    学号:<input type="text" name="XH" id="XH" size="12">
    课程名:<input type="text" name="KCM" id="KCM" size="12">
    <input type="button" value="查询" onclick="cj_query();"><br>
    成绩:<input type="text" name="CJ" id="CJ" size="12">
    </form>
    不过这样并未结束,还有字符集问题
      

  7.   

    首先感谢各位:我在执行
    1.浏览器地址栏:http://localhost/ex11_1_process.php?XH=001&KCM=高等数学输出如下:
    ( ! ) Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\wamp64\www\practice\ex11_1_process.php on line 11
    Call Stack
    # Time Memory Function Location
    1 0.0000 240280 {main}( ) ...\ex11_1_process.php:0
    2 0.0000 241488 mysql_connect ( ) ...\ex11_1_process.php:1199
    2.在输入ex11_1_process.php 输入001和高等数学 时候,F12 时候,报错如下:
    document.getElementById("CJ").value=XMLHttp.responseText;Uncaught TypeError: Cannot set property 'value' of null ex11_1_main.php:47XMLHttp.onreadystatechange
    请问该如何处理
      

  8.   

    1、你的 php 版本太高了,已不再支持 php_mysql 扩展了
    2、这个问题已在 #8 给出了解决方案
      

  9.   

    http://localhost/ex11_1_process.php 
    修改如下:已经ok
    <?php
    ini_set('display_errors',1);
    ini_set('display_startup_errors',1);
    error_reporting(-1);
    //print_r($_GET);
    //exit;
    $XH=$_GET['XH']; //取得XH的值
    $KCM=$_GET['KCM']; //取得KCM的值
    //header('Content-Type:text/html;charset=gb2312'); //发送header,将编码设为gb2312
    header('Content-Type:text/html;charset=uft8'); //发送header,将编码设为uft8
    //$conn=mysql_connect("localhost","root",""); //连接MySQL服务器
    //$db=new PDO("mysql:host=localhost;dbname=PXSCJ","root","");
    $conn= new mysqli('localhost','root','','PXSCJ'); 
    if (mysqli_connect_errno($conn))
    {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    mysqli_set_charset($conn, "utf8"); //将字符集设为uft8
    $sql="select 成绩  from CJB where 学号='$XH' and 课程号=(select 课程号 from KCB where 课程名='$KCM')";
    if ($result=mysqli_query($conn,$sql))
    {
    // Fetch one and one row
    while ($row= $result->fetch_object())
    {
    printf($row->成绩);
    }
    // Free result set
    mysqli_free_result($result);
    }mysqli_close($conn);
    ?>