我在CodeIgniter PHP页面上使用getJSON进行jquery ajax调用,但是回显的json字符串在第1行第1列包含意外字符。 实际上这是一个奇怪的追逐(在Chrome控制台上用红点表示)并且预先添加到任何回声:如果我从php文件中删除json输出和任何其他输出(即代码什么都不做),仍然是怪异的打印字符(我可以在Chrome控制台上看到它)。 此外,如果我使用浏览器直接调用页面,则看不到奇怪的字符(也检查代码)。 Ajax响应很好:状态200,除了奇怪的字符,格式有效。 似乎框架本身的输出会附加某些东西。
有关我的Codeigniter配置的一些信息: - 版本3.0 - i18n - 树枝 - HMVC
JS库: - jQuery v2.1.3 - jQuery-iu v1.11.4
PHP代码段:
$productionHierArr = array(
"productionHier" => $productionHier,
"dictionary" => $this->lang->language
);
$this->output->set_content_type('application/json');
echo json_encode($productionHierArr);
作为最后一点,相同的代码完全适用于我以前在CodeIgniter 2.2.1上没有HMVC的环境。 谢谢你的帮助。
修改
这是JS代码:
var ajaxHier = $.getJSON("item/getProductionHierJson");
$.when( ajaxHier ).done(function( data, textStatus, jqXHR ) {
initHier(data);
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log("error: ", textStatus);
console.log("errorThrown: ", errorThrown);
});
答案 0 :(得分:0)
在Chrome中,红点通常代表不可打印的特殊unicode字符。
请检查您的服务器端代码以防止输出这些字符
修改强> 最好用UTF-8编码它们而不用BOM。这可以通过记事本++轻松完成。步骤如下,
在记事本++中打开文件。 转到文件菜单上的编码选项。 然后选择“转换为无BOM的UTF-8”选项。 这可以解决您的问题。
答案 1 :(得分:0)
对于可能会遇到同样问题的其他人,这是我在调查两天后找到的解决方案: 事实证明文件" MY_Lang.php" in" core"文件夹采用UTF8 编码 BOM,当然应该是UTF8 没有 BOM。 幸运的是,我有这个东西的工作版本,并通过细节比较细节,我可以解决这个谜 无论如何,@Sekai走在正确的轨道上(对不起,+1的声誉不够),谢谢。