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

问题场景:有学生和老师两个界面,它们共用一个修改方法修改数据,这时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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值