Thinkphp5+layui上传图片出现“请对上传接口返回JSON字符”问题解决

    我是一个后端,对前端不太熟悉,问题也比较坑爹。进layui社区和论坛找遍了解法和尝试都没用,包括更改返回的JSON数据、找到文件去打印或者alert在哪个地方报的错,可是都没用,这里要说一下:文件缓存比较坑。一开始不管我怎么在这个js文件中打印都没用,后来我把这个文件名称改了,然后又改回去了才打印才生效。

    好了,说了那么废话,问题来了!

    首先,我们需要返回的是JSON数据,这没错,我返回的也是JSON数据。我返回的JSON数据时这样的:

  

{
    "code": 200, 
    "msg": "上传成功", 
    "path": "/uploads/images/20190428/ae2b0eb7b9d9eb4ad0b4cf94e8080470.png", 
    "savename": "20190428\\ae2b0eb7b9d9eb4ad0b4cf94e8080470.png", 
    "filename": "ae2b0eb7b9d9eb4ad0b4cf94e8080470.png", 
    "info": {
        "name": "微信图片_20190223105953.png", 
        "type": "image/png", 
        "tmp_name": "C:\\Windows\\php661E.tmp", 
        "error": 0, 
        "size": 10035
    }
}

它也一直报:请对上传接口返回JSON字符。

查看浏览器:

Thinkphp5+layui上传图片出现“请对上传接口返回JSON字符”问题解决

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

后来我在a=JSON.parse(a)这段代码前console.log(a);我才明白了,下面是我console.log(a);的结果

Thinkphp5+layui上传图片出现“请对上传接口返回JSON字符”问题解决

真相:原来TP5开了调试模式,返回的json数据和调试信息也在里面,所以一直报 请对接口返回JSON字符 。

关闭了TP5的调试模式,

'app_debug'              => false,
'app_trace'              => false,

关闭了之后,上传成功!

Thinkphp5+layui上传图片出现“请对上传接口返回JSON字符”问题解决

upload.js对应的打印结果:

Thinkphp5+layui上传图片出现“请对上传接口返回JSON字符”问题解决

Thinkphp5+layui上传图片出现“请对上传接口返回JSON字符”问题解决

最后总结一句:就是JSON.parse(a)解析的时候,a中包含TP5的调试代码,所以出现了异常,一直提示“请对上传接口返回JSON字符”

本人才疏学浅,本文难免有表诉不正确之地,请勿喷,有问题可以留言!