Uncaught TypeError: Cannot read property

Uncaught TypeError: Cannot read property

http://img1.sycdn.imooc.com//climg/5efb7c8a09d9107713600768.jpg

<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);


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,在if (xhr1.readyState ==4&&xhr.status ==200){}判断处缺少了一个花括号({})导致的,建议同学添加上。修改后代码如下所示:

http://img1.sycdn.imooc.com//climg/5efbffa1097abda507770519.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 宝慕林4057383 提问者 #1
    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); console.log(tr); //以下是通过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文件并删除相应结点 }添加了,问题依旧;麻烦老师再看看
    2020-07-07 01:32:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师