AJAX请求返回数据前置制表符是否正常及如何去除的咨询
问题解答
现象是否正常
这种情况不属于正常现象,本质是后端响应时额外输出了前置制表符,并非AJAX请求本身的默认行为。
产生原因
绝大多数场景下是PHP文件存在多余输出导致:
- 业务代码所在的PHP文件、或其引入的其他PHP文件,在
<?php起始标签前存在制表符、空格、换行等空白字符,PHP解析时会直接将标签外的内容输出到响应体 - 部分PHP文件在
?>结束标签后存在多余空白字符,也会被额外输出
修复方案
根源修复(推荐)
优先从后端侧解决问题,避免前端额外处理:
- 检查所有相关PHP文件,确保
<?php前无任何前置字符,同时可以删除文件末尾的?>标签(PHP支持省略末尾结束标签,可彻底避免后续多余字符输出) - 在输出响应内容前清空输出缓冲区,修改后的PHP代码如下:
function search_rhymes_get_rhyme_content() { ob_clean(); // 清空之前意外输出的缓冲区内容 echo 'Test'; die(); }
前端临时处理
如果暂时无法定位后端问题,可在前端对响应数据做清洗,去除前置制表符/空白字符,修改后的AJAX回调代码如下:
$.ajax( { url: rhymes_ajax_obj.ajaxurl, data: { 'action': 'search_rhymes_get_rhyme_content' }, success: function( data ) { // 正则匹配所有前置空白字符(含制表符、空格、换行)并删除 const cleanedData = data.replace(/^\s+/, ''); // 若仅需删除前置制表符,可替换为 data.replace(/^\t+/, '') console.log( 'Test:' + cleanedData ); }, error: function( error ) { console.log( error ); } } );
内容的提问来源于stack exchange,提问作者Francis Bégin
相关产品推荐
相关产品推荐

