繁体   English   中英

脚本第1行出现php错误“标头已设置”

[英]php error “headers already set” on line 1 of script

我有一个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');

因此,在第1行上没有任何要发送的标头,然后再尝试在第2行上再次发送它们! 我发现的所有类似问题的讨论都涉及额外的空格,但是我已经进行了三遍检查,没有多余的行或空格。

该脚本是通过如下所示的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”声明,但这确实消除了错误消息。 但是然后响应以text / html而不是以xml的形式返回。 如何获得对ajax调用的正确xml响应,而不会出现“标题已发送”错误?

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

另外,请注意那里可能存在BOM(字节顺序标记)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM