梦想与想象-广州大智汇 2020-05-07 01:07 采纳率: 0%
浏览 621
已结题

vuecli3,axios发送一个请求到后端,后端录入两条数据,是哪里出了问题

场景问题描述:

  • vue的axios请求,同样的代码,发送给thinkphp6,数据库录入是一条
    发送给thinkphp5,数据库录入是两条,第一条是空白的,第二条是真实的
    浏览器是发起一个请求的

  • 浏览器截图

图片说明

    // 对接tp6后端的写法
    // vue代码
          var data = {
            title: '模板22',
            colors: '{"0":"蓝色"}',
            number: 11

          }
          axios.post('/api/adminmb/Productlist/create', data)
            .then(function(response) {
              console.log(response)
            })
            .catch(function(error) {
              console.log(error)
            })



        // thinkphp6代码
      //控制器
        public function create()
    {
        $data = Request::param();
        $res = Product::createDo($data);

        if ($res) {
            return self::returnMsg(200, 'success',$data);
        } else {
            return self::returnMsg(401, 'fail',$data);

        }


    }

        //模型
        public static function createDo($data)
    {
        if(!empty($data['id'])){
            $result = Product::update($data,['id'=>$data['id']]);
        }else{
            $result = Product::create($data);
        }
        return $result;
    }   

        结果是录入正常的一条数据                

    //对接tp5的写法
    //vue代码
          var data = {
            title: '模板22',
            colors: '{"0":"蓝色"}',
            number: 11

          }
          axios.post('/api/adminmb/Productlist/create', data)
            .then(function(response) {
              console.log(response)
            })
            .catch(function(error) {
              console.log(error)
            })



    //thinkphp5写法
    //控制器
    public function create()
    {
        $data = $_POST;
        $CrmProduct = new CrmProduct();
        $CrmProduct->allowField(true)->save($data);
        $this->return_res($data);
    }

    结果是录入两条数据,第一条是空白的,第二条是真实的                 
  • 数据库截图

图片说明

  • 服务器用Nginx,跨域解决:
set $cors_origin "";
if ($http_origin ~* "^http://localhost:8080$") {
       set $cors_origin $http_origin;
}

add_header Access-Control-Allow-Origin $cors_origin;
add_header Access-Control-Allow-Headers X-Requested-With,X-Token,Content-Type,Accept,Origin;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE;
  • 排查方案

1、用apipost工具接口录入后端,测试正常,录入一条数据
2、用jQuery的写法录入后端,测试正常,录入一条数据

  • apipost工具截图

图片说明

  • jQuery写法代码
<script typet="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
<script>

    $(document).ready(function (e) {
          var data = {
            title: '模板22',
            colors: '{"0":"蓝色"}',
            number: 11
          }
      var url='/api/adminmb/Productlist/create';
      $.ajax({
        type: 'POST',
        url: url,
        dataType: 'json',  
        data: data,
        success: function (response, status) {
          if(response.code){
            //获取数据成功
            alert(response.data.title);
          }else{
            //返回错误数据
            alert(response.data);
          }
        },
        error:function(xhr,status,error){
          //返回数据异常
          alert('返回数据异常!');
        }
      });
    });

    </script>
  • 写回答

2条回答

  • 毕小宝 博客专家认证 2020-05-07 12:30
    关注

    断点调试一下 php5 请求执行了几次,网络请求发送了几次,有没有可能是重复提交了呢?

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)