1、昨天用$.ajax请求控制器发现死活请求不到,后来才发现控制器方法不能为private,改为public后成功请求。
2、今天用$.ajax去请求控制器,控制器删除数据库记录成功后,在$.ajax回调函数里面隐藏前台对应的记录,实现无刷新删除,但是发现后台能成功删除记录,但是前台回调函数体里面的语句死活执行不了,后来才发现在控制器里面成功执行sql后应该echo一个值,即使为1也好,这样回调函数才能成功执行。
控制器代码
//商品移出包裹功能 public function removePackage(){ $type=$_POST['type']; $id=$_POST['id']; $data['package_id']=0; //这个可以不改为0,改为0为了方便前台判断 $a=1; //防止国际转运移除后不能隐藏 if($type==1){ //移除的为代购商品 $a=M('Product')->where("id = " . $id . " AND user_id=" . $this->user ['id'])->save($data); } if($type==2){ //移除的为自助购商品 $a=M('ProductAgent')->where("id = " . $id . " AND user_id=" . $this->user ['id'])->save($data); } $b=M('PackageProduct')->where(' product_id= ' . $id . ' AND type= ' . $type)->delete(); // 删除对应数据 if($a>0&&$b>0)echo "1"; }
前台代码<script>
function remove(type,id) {
if (confirm('确定要将商品移出包裹吗?')){
$.ajax({
async: false,
url: "/Cart/removePackage.html",
type: "POST",
data: {"type":type,"id":id},
dataType: "json",
success : function(data){
$("#"+type+"_"+id).hide();
},
fail:function(){
}
});
}
}
</script>