【发布时间】:2012-06-29 12:07:33
【问题描述】:
我对 php 开发相对较新,但对 web 开发一般不熟悉。
我有以下 php 文件:
<?php
class dialogResult{
var $Message;
var $Title;
var $Height;
var $GenericData;
function __construct(){
$this->Height = 10;
}
}
header("Cache-Control: no-cache", true);
header("Content-type: application/json; charset=utf-8", true);
$dr = new dialogResult();
$dr->Message = "A Test Message encoded";
$dr->Height = 10;
$dr->GenericData = "Empty";
$dr->Title = "My Message";
echo(json_encode($dr));
?>
这会按预期返回 JSON 数据,但是如果我将类移动到单独的文件并添加 include、include_once、require 或 require_once,则会返回无效的 JSON 数据。谁能告诉我为什么会这样?
不必只是移动这个类,如果我有任何包含的文件,它会使数据无效。
谢谢,
基思
这是包含类,我也试过删除 ?>
<?php
class dialogResult{
var $Message;
var $Title;
var $Height;
var $GenericData;
function __construct(){
$this->Height = 10;
}
}
任何地方都没有前导或尾随空格。这是返回的“无效”JSON:
{"Message":"A Test Message encoded","Title":"My Message","Height":10,"GenericData":"Empty"}
如果我尝试使用 JSONLint 解析它,它会给我一个“意外令牌”。 当然,如果我手动将它输入到 JSONLint 那就没问题了。我想有一些我无法识别/看到的字符出现在 JSON 中,但不知道如何找到它。
【问题讨论】:
-
您是否使用这些包含的文件在屏幕上回显/打印任何内容?
-
回显时得到什么输出?
-
您是如何尝试获取 JSON 数据的?
-
另外,请尝试删除那些自定义标题。看看会发生什么。
-
我正在使用 jquery: $.ajax({ type: "POST", cache: false, url: fn, data: dataToUse, dataType: "json", success: successFn == null ? DialogResultSuccess : successFn, error: errorFn == null ? DialogResultFail : errorFn, beforeSend: function () { $.blockUI({ message: blockMessage }); } }) 获取值。我已经删除了自定义标题,但仍然得到该结果。