【发布时间】:2011-05-20 04:49:37
【问题描述】:
我有一个 php 脚本,它应该为 ajax 调用生成一个 xml 文件。它正在产生此错误消息:
警告:无法修改标头信息 - 标头已由 /home/ocp/public_html/sites/all 中的(输出开始于 /home/ocp/public_html/sites/all/modules/bookDisplay/getVersions.php:1)发送/modules/bookDisplay/getVersions.php 在第 2 行
奇怪的是php脚本的开头是这样的:
<?php
header('content-type:application/xml;charset=utf-8');
因此,在我尝试在第 2 行再次发送它们之前,第 1 行无处可发送任何标题!我发现的所有关于类似问题的讨论都在谈论额外的空格,但我已经检查并三重检查,没有多余的行或空格。
该脚本是从一个如下所示的 jquery ajax() 函数调用的:
function getVersions(){
var bookSelected = $.data(document.body, 'book');
$.ajax({
cache:"false",
type: "GET",
dataType: "xml",
url: "sites/all/modules/bookDisplay/getVersions.php",
data: "book=" + bookSelected,
success:function(xml){
}
});
}
这个 jquery 函数是否以某种方式发送与 php 文件中发送的标头冲突的标头?我试过删除“dataType”声明,这确实消除了错误消息。但随后响应以文本/html 的形式返回,而不是 xml。如何在没有“标头已发送”错误的情况下获得对 ajax 调用的正确 xml 响应?
【问题讨论】:
-
检查
<?php标签前是否有空格 -
你看过文件的编码吗?这可能会导致标头被发送。