JS报错解决:SyntaxError: Unexpected token 《 in JSON at position 0

ThinkPHP5.1的环境要求如下:

  • PHP >= 5.6.0
  • PDO PHP Extension
  • MBstring PHP Extension

最近下载了tp 5.1.19来玩,造轮子难免会遇到坑。

今天又遇到js报错:SyntaxError: Unexpected token < in JSON at position 0。根据网上的说法“json格式问题”,各种json_encode()、var_dump()检查json格式,却不能解决问题。

后面在调试信息中,无意发现以下信息:


Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0

Warning: Cannot modify header information - headers already sent in Unknown on line 0
"{\"code\":0,\"msg\":\"\\u83b7\\u53d6\\u6210\\u529f\\uff01\"}"

通过上网查询Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be remov得知关于【在高版本 php 的发版说明中都有 $HTTP_RAW_POST_DATA 即将(已经)取消,请改用从 php://input 中读取 的声明】,找到对应的解决方法

打开php.ini配置文件,找到以下代码

1

;always_populate_raw_post_data = -1

改成

1

always_populate_raw_post_data = -1

最后重启环境即可。

备注:有部分大佬表示$HTTP_RAW_POST_DATA 已经废弃了,所以应该使用file_get_contents('php://input');来获取。由于上面方法已经解决我的问题,所以并没有测试这种方法。在这里发出来,仅供大家参考。

你可能感兴趣的:(PHP)