vue下axios提交数据到php后台并存入mysql,取出json格式的数据时带双引号怎么解决?

1、vue的offer值设定如下:

offer: {
            isshow:false,
            sum_total_price:0,
            sum_discount:0,
            sum_price:0,
            children:[]    
        }

2、vue下axios提交代码如下:

let postData={
                offer:vm.offer
            }

axios.post("{:url('api/plan/save')}",Qs.stringify(postData))
            .then(function (response) {
                console.log(response);
            })
            .catch(function (error) {
                console.log(error);
            });

3、php接收后存入mysql,接收时打印如下:

  'offer' => string '{"isshow":"false","sum_total_price":"0","sum_discount":"0","sum_price":"0"}' (length=75)

4、php从mysql读取并输入到模板中去,代码如下:

  'offer' => string '{"isshow": "false", "sum_price": "0", "sum_discount": "0", "sum_total_price": "0"}' (length=82)

问题:原本offer的isshow应该是布尔型的;
现在从mysql取出后,加了双引号,变成字符串的;
isshow原本是在vue下控制div元素的显示与隐藏;
现在实现不了这个效果了;
针对这种双引号的问题,应该如何去解决???

阅读 4.4k
3 个回答

问题在于Qs.stringify(postData),以application/x-www-form-urlencoded方式传参当然什么都是字符串。
通过application/json传参就行了。

axios.post(url, postData)

一个简单的思路,数据既然不能直接用,加个判断应该也可以

if(response.offer.isshow=='false') {
    this.offer.isshow==false
}

数据库取出来 时候直行一下json_decode

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题