Uncaught TypeError: Cannot read property
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>ajax</title> </head> <body> <div id="continer"></div> </body> <script> //1.创建xhr对象 var xhr = new XMLHttpRequest(); //2.绑定监听readyState的事件,并且将响应数据写入到div当中 xhr.onreadystatechange=function(){ if (xhr.readyState ==4&&xhr.status ==200){ var div = document.getElementById("continer"); var res =xhr.responseText; res = JSON.parse(res); if (res.code == 200){ //循环遍历输出res.data 到一个表格当中 var html='<table align=center>'; html +='<tr><th>ID</th><th>名称</th><th>金额</th><th>菜单</th></tr>' for(var i=0; i<res.data.length;i++){ html +='<tr id="course_'+res.data[i].id+'">'; html +='<td>'+res.data[i].id+'</td>'; html +='<td>'+res.data[i].name+'</td>'; html +='<td>'+res.data[i].money+'</td>'; html +='<td><a href="javascript:del('+res.data[i].id+');">删除</a></td>'; html +='</tr>'; } html +='</table>'; div.innerHTML=html; }else{ div.innerText = res.msg; } } } //3.打开通道 xhr.open("get","cx.php",true); //4.发送请求 xhr.send(); //定义删除函数 function del(id){ if(window.confirm("你确认要删除吗")){ //1.实例化对象 var xhr1 = new XMLHttpRequest(); //2.建立监听 xhr1.onreadystatechange=function(){ if (xhr1.readyState ==4&&xhr.status ==200) var res1= JSON.parse(xhr1.responseText); console.log(xhr1.responseText); if (res1.code==200){ var tr = document.getElementById('course_'+id); //以下是通过tr的父节点,删除当前tr tr.parentNode.removeChild(tr); } } //3.打开通道 xhr1.open("get","del.php?id="+id,true); //4.发送请求 xhr1.send(); //1防止用户误点,确认按钮 //2如果确认删除,AJAX请求del.php,并且将id传递过去, //3.在del.php中将相应数据进行删除; //4.在del.php中生成JSON文本,响应成功或都失败数据; //5.AJAX抓取JOSN文件并删除相应结点 } } </script> </html>
--------------------------------------------------------------------------------------------------------
del.php文件源码
<?php
$id =$_GET['id'];
try{
$pdo=new PDO(
'mysql:dbname=test;host=localhost;port=3306',
'root',
'root',
[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]
);
$sql='delete from users where id=:id ';
$stmt=$pdo->prepare($sql);
$stmt->execute(["id"=>$id]);
if($stmt->rowCount()){
$res=[
'code'=>200,
'msg'=>'ok',
];
}else{
$res=[
'code'=>201,
'msg'=>'删除失败',
];
}
}catch (PDOException $e){
$res=[
'code'=>500,
'msg'=>$e->getMessage(),
];
}
echo json_encode($res);
正在回答
同学你好,在if (xhr1.readyState ==4&&xhr.status ==200){}判断处缺少了一个花括号({})导致的,建议同学添加上。修改后代码如下所示:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星