在thinkphp中,在控制器处理ajax post过来的数据时,ajaxReturn()会屏蔽后续代码的问题

今天在thinkphp中(5.0.7),前端进行ajax post上传数据,在控制器代码中,通过ajaxreturn()返回json数据,返回数据后,继续在控制器代码中,对post过来的数据进行decode解码等操作,或者进行file_put_contents()文件写入操作,发现,在控制器代码中,写在ajaxreturn()后面的所有代码都不会执行了。

调整了代码的顺序,我将ajaxreturn()放到了其他代码的后面,控制器执行则正常。

这说明,控制器在对ajax进行ajaxreturn()操作以后,就不会对ajax post过来的数据再进行任何的处理操作了。

若控制器需要对前端ajax post过来的数据多次进行复合操作,那么,一定要将这些对数据进行操作的代码写在ajaxreturn()函数的前面。

代码示例:

前端代码:

以下代码非完整代码,仅用于做示例说明,前端通过ajax post了一个json数据给thinkphp的控制器,并且通过

  $('#creatcode').html("base64数据内容是:"+data); 

这个success内的函数操作,在前端页面中显示post数据的内容。

  $.ajax({
     url: "",
     dataType: "json",
     type: "POST",
     data: {img:ajaxdata},

     success: function (data) {
           alert('上传成功');
           //console.log(data);
          $('#creatcode').html("base64数据内容是:"+data); 
            },
     error: function(XMLHttpRequest, textStatus, errorThrown) {
      console.log(textStatus);
      console.log(errorThrown);
      alert('上传失败'+errorThrown);
     },
     complete: function(xhr, stat) {}
    });
   });
  });

在控制器中,对前端ajax post过来的数据进行处理,以下代码注意,我已经将 this>ajaxReturn( t h i s − > a j a x R e t u r n ( img_data); 这个代码放入了数据处理代码的后面,那么数据处理正常执行。

        if(IS_POST){
        $img_data= $_POST['img'];
        $userLogic->base64_to_file($img_data,'livecover');
        //$file_put = file_put_contents("public/upload/images/live_cover/112.txt", "4q");
        $this->ajaxReturn($img_data);
        echo json_encode(array('code'=>1));
        } 

错误代码示例:

        if(IS_POST){
        $img_data= $_POST['img'];
        $this->ajaxReturn($img_data);
        $userLogic->base64_to_file($img_data,'livecover');
        //$file_put = file_put_contents("public/upload/images/live_cover/112.txt", "4q");

        echo json_encode(array('code'=>1));
        } 

在这个代码中,我将 this

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值