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字符。
查看浏览器:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
后来我在a=JSON.parse(a)这段代码前console.log(a);我才明白了,下面是我console.log(a);的结果
真相:原来TP5开了调试模式,返回的json数据和调试信息也在里面,所以一直报 请对接口返回JSON字符 。
关闭了TP5的调试模式,
'app_debug' => false,
'app_trace' => false,
关闭了之后,上传成功!
upload.js对应的打印结果:
最后总结一句:就是JSON.parse(a)解析的时候,a中包含TP5的调试代码,所以出现了异常,一直提示“请对上传接口返回JSON字符”!
本人才疏学浅,本文难免有表诉不正确之地,请勿喷,有问题可以留言!