PHP:json_encode()如果使用include_once(),则为SyntaxError

时间:2014-04-06 18:11:54

标签: php ajax json

备注:使用XAMPP 在PHP上,我使用json_encode()将数据返回给JS / JQuery ajax请求。

来自.js的ajax调用:

$.ajax({url: "/sys/search_rf/functions.php" ,
    async: false, // wait for reponse
    type: "post",
    data: { id: $('#id').val(),
            status: $('#status').val(),
            token: cToken } ,
    success: function(jsonResponse,status){ // POST success
        console.log(jsonResponse);
    jsonData = JSON.parse(jsonResponse);
            [...]
        }

在functions.php。

中我require_once()另一个.php之前一切正常
require_once(dirname(dirname(__FILE__)).'/searches.php'); // -> ../searches.php

输出调试: json_encode outputs

除了返回json_encode()的函数外,所有包含的PHP都不会回显/打印任何内容。

那么,我编辑了searching.php并将其保留(调试目的):

<?php

?>

所以我百分百肯定没有回音,我保持着:

require_once(dirname(dirname(__FILE__)).'/searches.php'); // -> ../searches.php
在functions.php中的

,它响应ajax请求。

但错误仍然存​​在:

SyntaxError: JSON.parse: unexpected character

如果我评论它,就没有错误!

// require_once(dirname(dirname(__FILE__)).'/searches.php'); // -> ../searches.php

我想每当我require_once()它回应'某事'时。我真的不知道。


我还检查了所有文件的所有EOL /编码。 全部采用UTF-8编码的Unix格式。


这种解决方法可行,但我认为这不是正确的解决方案:

jsonData = JSON.parse( jsonResponse.trim() );

.trim()

1 个答案:

答案 0 :(得分:2)

你应该在打开php标签之前删除关闭php标签和所有空格。还要检查文件中是否使用没有BOM的UTF-8。