今天学习了基于thinkphp5的ajax无限父级的操作
1.相应文件图:
2.数据库表名lsy_topic
相应代码的实现:
1.视图:app/index/view/user/topic.html
<div>
<!--一级-->
<select id="pname" class="pure-input-s" name="pname" onchange="topic_ajax();" >
<option value=''>请选择</option>
{volist name='pc' id='value'}
<option value='{$value.id}'>{$value.name}</option>
{/volist}
</select>
<!--二级-->
<select id="poname" class="pure-input-s" name="poname" onchange="topic_ajaxx();">
</select>
<!--三级-->
<select id="ptname" class="pure-input-s">
</select>
</div>
<script>
function topic_ajax(){
var name=$('#pname').val();
$.get({url:('../topic/topic_ajax.html')},{"pname":name},function(data){
data1= eval("("+data+")");//处理变成json格式
//console.log(data);非json格式
//console.log(data1);json格式
$("#poname").html('<option value="">请选择</option>');//清空数据,$("#poname")获取id="poname"的标签,html(“”)以html的方式写入内容
$.each(data1,function(i,val){//循环i次输出数据
$("#poname").append("<option value="+val.id+">"+val.name+"</option>");//$("#dl")获取id="d1"的标签,在里面追加内容
});
});
/*$.post("{:url('TopicAjax/topic_ajax')}",{"testname":testname},function (data) {
//console.log(res);
alert('ajax返回来的值是:'+data);
});*/
}
</script>
<script>
function topic_ajaxx(){
var name=$('#poname').val();//获取值
//alert("1");
$.get({url:('../topic/topic_ajaxx.html')},{"poname":name},function(data){
data2=eval("("+data+")");
$("#ptname").html('');
$.each(data2,function(i,val){
$("#ptname").append("<option value="+val.id+">"+val.name+"</option>");
});
});
}
</script>
2.控制器:app/index/controller/topic.php
<?php
namespace app\index\Controller;
use think\Controller;
use think\Db;
class Topic extends Controller{
public function skip_topic(){
$topic= Db::table('lsy_topic')->query("select * from lsy_topic ");
$po = Db::table('lsy_topic')->query("select * from lsy_topic WHERE pid=0");
//var_dump($topic); exit();//可以查看是否成功获取数据
$this->assign('topic', $topic);
$this->assign('pc', $po);
return $this->fetch('user/topic');
}
public function topic_ajax(){
if(request()->isAjax()){
$name=input('pname');//获取表单数据
$pt = Db::table('lsy_topic')->query("select * from lsy_topic WHERE pid=$name");
// $this->assign('st', $pt);
header('Content-Type:text/html; charset=utf-8');
exit(json_encode($pt));
}
}
public function topic_ajaxx(){
if(request()->isAjax()){
$name=input('poname');
$sont=Db::table('lsy_topic')->query("select * from lsy_topic WHERE pid=$name");
//$this->assign('sont',$sont);
header('Content-type:text/html;charset=utf-8');
exit(json_encode($sont));
// return $name;,
}
}