如何调试ajax 和php

###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, 课程名:高等数学,点击 查询,

成绩 一栏却没有任何输出,也没报错,该如何调试?


xuzuning
本版等级:T12
Blank Blank Blank
更多勋章
#1 得分:0 回复于: 2017-04-22 11:23:03
本帖最后由 xuzuning 于 2017-04-22 11:30:59 编辑
第一步
浏览器地址栏: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 并未提交


本版等级:T1
#6 得分:0 回复于: 2017-04-26 17:30:41
第一步
浏览器地址栏: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 并未提交,请问该如何处理。

非常感谢!
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理


本版等级:T1
#7 得分:0 回复于: 2017-04-26 23:30:02


Firefox/sougou web 按F12


#8 得分:0 回复于: 2017-04-27 08:18:22
本帖最后由 xuzuning 于 2017-04-27 08:21:08 编辑
<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>

feiyun11
本版等级:T1
#9 得分:0 回复于: 2017-04-27 15:39:09
首先感谢各位:

我在执行
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:wamp64wwwpracticeex11_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:11

99


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


更多勋章
#10 得分:0 回复于: 2017-04-27 15:42:21
1、你的 php 版本太高了,已不再支持 php_mysql 扩展了
2、这个问题已在 #8 给出了解决方案
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理


feiyun11
本版等级:T1
#12 得分:0 回复于: 2017-04-28 15:22:05
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);
?>

http://bbs.csdn.net/topics/392159270?page=1#post-402308012

原文地址:https://www.cnblogs.com/feiyun8616/p/6781799.html