ajax请求,返回值格式:json,返回的格式不是严格的json格式
浏览器返回的数据:response里面的字符串输出的前面带有一个红点,因为这个红点,页面上不会执行相关逻辑
示例:
$.post('请求地址',{参数key:参数value},function (res) {
//TODO相关逻辑
},'json');
$.ge t('请求地址',function (res) {
//TODO相关逻辑
},'json');
获取数据后后续操作不执行,F12也不报错,查看返回值,也是正常的,不明所以
解决方案:
查看返回值的格式是否正确
查看缓存区是否被占用(被占用的标志之一:返回值带有小红点)
相关:
ob_clean() - 清空(擦掉)输出缓冲区
ob_end_clean() - 清空(擦除)缓冲区并关闭输出缓冲
详细说明一下原因:
在php的默认配置下,php输出是先输出到缓冲区(output_buffering,内存区域),然后输送到浏览器。不过只要数据还没有真正发送到浏览器(严格来说是tcp buffer),那么是可以通过内置的ob_clean函数进行清空的。
ob_clean()刷新缓冲区,但保留输出缓冲活动。这意味着您的readfile()输出也将被缓冲。
ob_end_clean()刷新缓冲区,并完全关闭缓冲区,允许readfile()直接转储到浏览器
ob_clean 只是清空当前缓冲区的数据,如果先前输出的数据大于缓冲区,那么一部分数据已经发送,发送的这部分数据是无法清空的。另外如果禁用php输出缓冲区,那么 ob_clean 会起不到任何效果的。
所以需要抑制输出(忽略掉前面所有的输出)也就是说前面那的输出将不会输出到浏览器,所以即json格式错误并且没有输出到浏览器,就不会报错了
注意点:
本地环境和线上环境有区别,注意函数的使用