2014-03-24 21 views
1

我從服務器上的php文件中得到一個警告,不知道什麼是錯的。我正在從我的javascript函數向服務器發送ajax調用,並且它只是在xmlhttp.readyState == 4 && xmlhttp.status == 200中沒有收到任何響應。即使在使用ob_start之後,也不能修改標題信息?

我試圖對位於本地計算機上的php文件/ mysql數據庫進行相同的調用,但它對遠程主機不起作用。此外,我有一個類似的PHP文件在服務器上,只是選擇條款不同,它在那裏工作不知道這裏有什麼問題?

警告:不能更改頭信息 - 已經 發送的報頭 (輸出開始 /home2/marshell/public_html/cfv/getuserpostbybusnumber.php:2)/ HOME2 /馬歇爾/的public_html/CFV/getuserpostbybusnumber .php on line 4

<?php 
ob_start(); 
header("Access-Control-Allow-Origin: *"); 
$q = intval($_GET['q']); 



$con=mysqli_connect("localhost","ma","Ad","mars","3306"); 

if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$result = mysqli_query($con,"SELECT * FROM cfv_viewbusupdate WHERE BusNumber = ".$q." ORDER BY DatePosted DESC"); 

    while($row = mysqli_fetch_array($result)) 
    { 

    echo "<P>"; 
    echo "<B><font color=\"3300CC\">#" . $row['DatePosted'] . "</font></B> --"; 
    echo "" . $row['username'] . " posted </br>"; 
    echo "<B>Bus Number . </B>"; 
    echo "<font color=\"CC0033\">" . $row['BusNumber'] . "</font></br><B> Going towards </B>"; 
    echo "<font color=\"CC0033\">" . $row['Direction'] . "</font></br> <B>Stop Name: </B>"; 
    echo "<font color=\"CC0033\">" . $row['StopNames'] ."</font></br><B> Time </B><font color=\"CC0033\">".$row['time']." </font></br><B> Status </B>"; 
    echo "<font color=\"CC0033\">" . $row['Status'] . "</font> "; 
    echo "</br> <B> Comment's </B>: <font color=\"CC0033\">" . $row['comments'] . "</font>"; 
    echo "</P>"; 
    echo "<hr> "; 
    } 

mysqli_close($con); 

?> 

function updateUserPost(str) { 




    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange = function() { 

     if (xmlhttp.readyState < 4) { 
       showModal(); 
       } 


     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 


      // $('#select-choice-direction-foruserpost').html(xmlhttp.responseText).selectmenu("refresh"); 
       hideModal(); 
      document.getElementById("result").innerHTML = xmlhttp.responseText; 
      //alert(xmlhttp.responseText); 


     } 
    } 

    xmlhttp.open("GET", "http://www.xyz.uni.me/cfv/getuserpostbybusnumber.php?q="+str, true); 


    xmlhttp.send(); 

}

+0

把ob_start放在標題後面 –

+0

你的腳本的哪些行是第2行和第4行?因爲我非常懷疑'ob_start()'發送頭文件,我更懷疑'intval()'產生頭文件。 – Tularis

+0

@ferozakbar,以及如何解決問題? 'ob_start'只是開始輸出緩衝。標題是輸出的一部分(只是第一部分)。因此,稍後啓動緩衝區有助於......如何? – Tularis

回答

1

此問題發生時,有白色的空間,在大多數情況下其<?php<?標籤之前,有一段時間它在包括文件之一,大多是在文件的結尾。確保你沒有這些空間。顯示的錯誤消息將指示您到那個位置。

我認爲它必須做一些編碼的事情。我遇到過這個問題,而開發環境是基於Windows的大多數時間WAMP(工作正常),其中生產環境是基於Linux的(發生問題)。人們通常建議使用文件編碼爲"UTF-8 without BOM" Notepad ++有此選項。一些時間編碼由FTP客戶端改變,也檢查設置。

我注意到WAMP實例在php.ini文件中有以下配置,它通過緩衝輸出忽略頭部已經發送錯誤。

output_buffering = On 

如果在本地環境中將其更改爲關閉,則可能會看到標頭已發送錯誤。

output_buffering = Off 
+0

是的,正是這個問題。它適用於WAMP,但不適用於在線Linux服務器,因爲默認情況下,本地計算機上的php.ini文件中打開了輸出緩衝。非常感謝您的解釋 –

+0

歡迎隊友我很高興您找到您的解決方案。 –

相關問題