php错误"标题已经设置"在脚本的第1行

mon*_*ker 1 php xml ajax jquery

我有一个PHP脚本,应该为ajax调用生成一个xml文件.它正在生成此错误消息:

警告:无法修改标头信息 - 已经发送的标头(在/ home/ocp/public_html/sites/all/modules /中从/home/ocp/public_html/sites/all/modules/bookDisplay/getVersions.php:1开始输出)第2行的bookDisplay/getVersions.php

奇怪的是,php脚本的开头如下所示:

<?php
  header('content-type:application/xml;charset=utf-8');
Run Code Online (Sandbox Code Playgroud)

因此,在我尝试在第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){

    }
  });
}
Run Code Online (Sandbox Code Playgroud)

这个jquery函数是否以某种方式发送与php文件中发送的标头冲突的标头?我已经尝试删除"dataType"声明,这确实摆脱了错误消息.但后来响应以text/html的形式返回,而不是xml.如何在没有"已发送标头"错误的情况下获得对ajax调用的正确xml响应?

Sar*_*raz 6

请注意,标题应该发送之前别的.确保在头函数之前没有代码/ html甚至空格/缩进,并且在第一个打开php标记<?php和结束标记之前没有任何内容?>.

还要注意可能存在的BOM(字节顺序标记).