Jquery POST和AJAX在返回的数据前面加了两个空格


Jquery POST and AJAX prepend double space to returned data

大约两周后,我仍在与这个问题作斗争,没有解决的迹象。

PHP使用$.ajax或$.post返回的任何数据总是在返回的数据上添加两个空格。我已经修剪了在PHP中响应的数据,以确认这不是服务器或我的脚本的问题。

例如

echo '{"id": "'.$myId.'"}';

成为:

'  {"id": "'.$myId.'"}' 

在检查器中查看返回的数据时。这给我的js脚本带来了问题,因为当没有错误时,它们不希望返回任何内容。返回双倍空间,当实际上没有错误时会导致错误,从而阻止其他事件的启动。

我使用的是Jquery 1.8.3。

有人知道是什么导致了这个极其奇怪和令人讨厌的问题吗?


我正在使用NetBeans


我记得这是在我将应用程序移动到新服务器后才开始发生的,但我不知道这会对它产生什么影响。

这可能会有所帮助,

我认为您的脚本中有一个空白(可能来自包含的文件,但不确定)。在将数据发送到浏览器之前,您可以通过清除输出缓冲区来克服这一问题。下面的代码将演示这个想法。

<?php
ob_start();
echo ' '; // Possible whitespace (may be from included files)
----------
----------
if (YOUR_CHECK_FOR_AJAX_REQUEST) {
    ob_end_clean();
    $myId = 1;
    echo '{"id": "'.$myId.'"}';
    exit;
}
?>

您可能在包含的php文件的末尾有空格(为了防止这种情况,请跳过结束?>标记)。

此外,您应该检查<?php前面是否没有任何内容,并在UTF-8文件中禁用BOM。

从文件返回的数据可能有空格,或者有html标记。删除所有标签、行、空格,并在末尾删除?>

如果您从test.php返回数据,文件应该如下所示

<?php
$myId = '1';
echo '{"id": "'.$myId.'"}';