0

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

4

3 回答 3

4

请注意,两个 php 块之间有一个空行。它也得到显示。将其更改为

<?php
?><?php
echo "ok";
?>

应该没问题。

于 2013-02-11T07:15:28.337 回答
0

PHP 块中的空白将被忽略,但 PHP 块之间的空格将始终返回。您可能会更幸运地打印一个 json 字符串,例如:

{'response':'ok'}

然后在您的 ajax 请求中将您的数据类型更改为 json,并使用 data.response 访问响应

这样任何额外的空格都不会影响解析

于 2013-02-11T07:20:59.673 回答
0

PHP 是一种模板语言。标签之外的所有内容都不会被解析并按字面意思返回。

例子

<html>
..
    <body>
        <?php echo "Hello world"; 

// white space within the tags

?>
    </body>
</html>

将返回

<html>
..
    <body>
        Hello world
    </body>
</html>
于 2013-02-11T07:21:27.613 回答