我设法将这个问题归结为最基本的问题:所以我有两个简单的 .php 文件:
测试.PHP
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>My Page</title>
<script src='/root/js/jquery-1.6.3.js'></script>
<script>
$(document).ready(function() {
$.ajax({
        url : 'test_ajax.php',
        type : 'GET',
        timeout : 10000,
        dataType : 'text',
        data : { 'param' : 'whatever' },
        success : function(data,status,jqXHR) {
            $('#status').html(data.length+"-"+data);
        },
        error : function(jqXHR,textStatus,errorThrown) {
            $('#status').html("Error: "+textStatus+" , "+errorThrown);
        },
        complete : function(jqXHR,textStatus) {
        }
    });
}); // end ready
</script>
</head>
<body>
    <p id='status'>
    </p>
</body>
</html>
和 TEST_AJAX.PHP
<?php
?>
<?php
echo "ok";
?>
应该从 TEST_AJAX.PHP 返回的数据是“好的”。然而,jQuery/ajax 代码正在检索的是一个三个字符串,输出为“ok”(尽管 [0] 处的字符不等于“”)。
仅当我在 TEST_AJAX 中有两个 php 块时才会发生这种情况。如果我删除第一个块,只留下第二个块,那么它应该返回“ok”作为一个双字符串。
这到底是怎么回事?AFAIK,在 .php 文件中包含多个 php 块应该是完全可以接受的——即使在这个简化的示例中显然没有必要。