我从服务器上的php文件收到警告,不确定是什么问题。我正在从我的javascript函数到服务器进行ajax调用,它在xmlhttp.readyState == 4 && xmlhttp.status == 200
中没有收到任何响应。
我尝试对位于我的本地计算机上的php文件/ mysql数据库进行相同的调用,但它不适用于远程主机。另外,我在服务器上有一个类似的php文件,只有select子句不同,它在那里工作不确定这里有什么问题?
警告:无法修改标头信息 - 已发送的标头 (输出始于 /home2/marshell/public_html/cfv/getuserpostbybusnumber.php:2)in 第4行/home2/marshell/public_html/cfv/getuserpostbybusnumber.php
<?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 :(得分:1)
当存在空格时会发生此问题,大多数情况下它位于<?php
或<?
标记之前,有时则位于其中一个包含文件中,大部分时间位于文件末尾。确保你没有这些空间。显示的错误消息将指向您的位置。
我认为必须对编码做一些事情。我遇到过这个问题,而开发环境基于Windows的大部分时间都是WAMP(工作正常),其中生产环境是基于linux的(发生问题)。人们通常建议使用文件编码为"UTF-8 without BOM"
Notepad ++有此选项。 FTP客户端改变了一些时间编码,也检查了设置。
我注意到WAMP实例在php.ini
文件中有以下配置,忽略了已经通过缓冲输出发送错误的标头。
output_buffering = On
如果在本地环境中将其更改为关闭,则可能会看到标题已发送错误。
output_buffering = Off