我设法将这个问题归结为最基本的问题:所以我有两个简单的 .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 块应该是完全可以接受的——即使在这个简化的示例中显然没有必要。