私はこの問題を最小限の本質にまで煮詰めることができました.2つの単純な.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 から返されるはずのデータは「OK」です。ただし、jQuery/ajax コードによって取得されるのは、" ok" として出力される THREE 文字列です (ただし、[0] の文字は " " と等しくありません)。
これは、TEST_AJAX に 2 つの php ブロックがある場合にのみ発生します。最初のブロックを削除して 2 番目のブロックだけを残すと、2 文字の文字列として "ok" が返されます。
ここで何が起こっているのですか?私の知る限り、.php ファイルに複数の php ブロックを含めることは完全に許容されるはずです。ただし、この単純化された例では明らかに不要ですが。