【发布时间】:2011-06-06 15:18:31
【问题描述】:
我正在尝试主要使用 JavaScript 和 AJAX 进行简单的网络聊天。问题是我使用提示框进行登录,并且该函数在 <body onload="login()"> 中调用,这是一个简单的 JS 函数,但我想保存PHP会话中的数据。问题是每次我重新加载聊天页面时都会得到这个
警告:session_start() [function.session-start]:无法发送 会话 cookie - 标头已发送 由
我想这是标准的东西 - 我在正文中加载了几个函数,即使你把 session_start 函数放在页面的最顶部,也许在它之前加载了一些东西。所以,如果我我是对的,当您使用 JS 和 PHP 会话时存在一些标准问题,有什么办法可以解决它,我尝试以这种方式混合 PHP 和 JS 是否做错了?我正在考虑使用 ob_start,但即使这解决了问题我想找到另一种方法来做到这一点,因为我认为这不是最好的编程实践。无论如何,将感谢有关该主题的任何建议。
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<LINK href="style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
function showUser()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// Използваните браузъри
xmlhttp=new XMLHttpRequest();
}
else
{// Кой ли ползва тези версии..
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ActiveUsers").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","showuser.php",true);
xmlhttp.send();
setTimeout("showUser()",5000);
}
function showChat()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// Използваните браузъри
xmlhttp=new XMLHttpRequest();
}
else
{// Кой ли ползва тези версии..
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("chat").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","showchat.php",true);
xmlhttp.send();
setTimeout("showChat()",1000);
}
function Login()
{
var x=prompt("Please enter your name","");
var xmlhttp;
if (window.XMLHttpRequest)
{// Използваните браузъри
xmlhttp=new XMLHttpRequest();
}
else
{// Кой ли ползва тези версии..
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","login.php?u="+x,true);
xmlhttp.send();
}
</script>
<title></title>
</head>
<body onload = "showUser(), showChat(), Login()">
<?php
If ($_SESSION['UserName']!='alabala'){echo "hi";}
?>
<script type="text/javascript">
function doWork(str)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// Използваните браузъри
xmlhttp=new XMLHttpRequest();
}
else
{// Кой ли ползва тези версии..
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","newmsg.php?q="+str,true);
xmlhttp.send();
}
</script>
<div id="main">
<div id="ActiveUsers"></div>
<div id="chat"></div>
<div id="sender">
Your message: <input type="text" name="msg" size="30" id="msg" />
<button onclick="doWork(document.getElementById('msg').value);">Send</button>
</div>
</div>
</body>
</html>
谢谢
勒隆
【问题讨论】:
-
它与javascript无关。您可能有某种警告或错误被隐藏但首先打印,这会导致 session_start() 问题。请发布您的代码,以便有人可以向您展示实际问题。
-
可能是BOM问题。 stackoverflow.com/questions/2243087/…
-
您只是省略了消息中有趣的部分。消息说明输出从哪里开始?
-
输出开始于 C:\Program Files\webPHP\xampp\htdocs\MyChat\chat1.php:1) 在 C:\Program Files\webPHP\xampp\htdocs\MyChat\chat1.php 上第 2 行
-
我问题中的代码是实际的chat1.php代码。
标签: php javascript ajax