簡體   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