vue的get请求传递动态参数php接收动态参数

    科技2025-01-17  3

    问题场景:有学生和老师两个界面,它们共用一个修改方法修改数据,这时get请求传递给后端的数据就不一样了。例如原来一行的数据是这样的

    //这是学生原来的数据 stu={sno:'10001',sname:'张三',ssex:'男'} //这是老师原来的数据 tea={tno:'0001',tname:'郭靖',ssex:'男'}

    现在我要发送get请求给后台(我这里后台是php)要求改成这样

    //这是学生要修改的数据 newStu={sno:'10001',sname:'王五',ssex:'女'} //这是老师要修改的数据 newTea={tno:'0001',tname:'王重阳',ssex:'男'}

    由于它们共用一个修改方法

    update(){ this.$http.get('xuanke/Admin/update.php',{ params:{ //由于键值不一样,这里怎么把要修改的数据传到后台 } }).then(res=>{ console.log(res.data) }) },

    思考了一下,params是一个object,stu、tea也是一个object,或许可以修改的时候把值赋给一个对象

    var data={}; //学生修改的时候 data=newStu //老师修改的时候 data=newTea update(){ this.$http.get('xuanke/Admin/update.php',{ params:data//注意这里 }).then(res=>{ console.log(res.data) }) },

    事实证明确实可以 那么问题又来了,后台php怎么接收数据,$_GET[’’]用不了啊,因为传递的参数都是不确定的,有可能传过来的是要修改的学生数据,也有可能传过来的是要修改的老师数据。

    $_GET[’’]不能用,那我们是不是可以取url地址

    $serve=$_SERVER['QUERY_STRING']; echo $serve //如果中文是乱码的话可以这样 //$serve=urldecode($_SERVER['QUERY_STRING']);

    取出来是这样的 接下来给他处理一下

    $data=preg_split('/[=&]/',$serve);//按符号&和=切割为数组,这里用的正则 //结果就像是这样的 ['sno','10001','sname','张三','ssex','男']

    在遍历一下,弄成关联数组那样

    $arr=array(); for($i=0;$i<count($data);$i+=2) { $arr[$data[$i]]=$data[$i+1]; } //就像这样的 arr('sno'=>'10001','sname'=>'张三','ssex'=>'男') //这样我们就可以很随便调用值了 arr['sno'] arr['sname'] arr['ssex']

    但是还是有个问题,php里怎么区分是哪个页面发来的请求,然后根据不同的情况执行update语句 细心的同学可以看到我echo $serve的时候有个table=teacher

    var data={}; //学生修改的时候 data=newStu data.table='student' //老师修改的时候 data=newTea data.table='teacher' update(){ this.$http.get('xuanke/Admin/update.php',{ params:data//注意这里 }).then(res=>{ console.log(res.data) }) },

    这样我们就可根据不同的table执行不同的操作了

    switch ($arr['table']){ case 'teacher': $sql="update teacher set tname='".$arr['tname']."',tphone='".$arr['tphone']."',tsex='".$arr['tsex']."'"; break; case 'student': $sql="update student set "; break; } mysqli_query($conn,$sql);
    Processed: 0.010, SQL: 8