[英]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.