chat.html
在这个页面里会有一个button,点击后,会往数据库里表userInfo添加一条记录,字段有id,support,status等。support默认为0,status默认为"wait";
assignSupport.html //一直运行着
这个页面里用setInterval(),每隔一段时间查询userInfo里,用一定的法则,将status为 "wait"的条目的support修改为一些特定的值,并将status改为"assigned";
执行的时候,目的是要在chat.html这个页面里得到id,以及修改后的support的对应值。
打开chat.html,点击button,往userInfo表里添加一条记录,id为自动分配的,support为0,status为"wait"。插入记录的时候,用的是xmlHttpRequest,回调函数里返回的是这条记录的id。到这里都没有问题。
因为assignSupport.html是一直在运行的,所以不知道在什么时候它就会给support字段赋值,因此在上面的回调函数里:
function returnUserId()
{
//那些if等省略..xmlDoc为responseText
userId = parseInt(xmlDoc);//得到id
//alert(userId);
getS = setInterval(getSupport,300); //每隔一段时间执行函数getSupport.
}
function getSupport()
{
var url = "getSupportId.php?"+"&userId="+userId;
connection(url,returnSupportId,"Text"); //这个函数用来创建xmlhttp,并设定返回的时候responseText,回调函数为returnSupportId
}
function returnSupportId(xmlDoc)
{
alert(xmlDoc);
//if(xmlDoc == "error") return;
if(parseInt(xmlDoc) != 0)
{
supportId = parseInt(xmlDoc);
alert(supportId);
clearInterval(getS);
}
}
getSupportId.php
<?php
$userId = $_GET['userId'];
$conn = mysql_connect("localhost","root","");
$db=mysql_select_db("online",$conn);
$mysql_select = "select support,status from userinfo where id='$userId'"; //按理说没有必要select status
//$mysql_select = "select support from userinfo where id='$userId'";
$result=mysql_query($mysql_select)
or die("Query failed: " . mysql_error());;
$num = mysql_num_rows($result);
if($num == 1)
{
if(mysql_data_seek($result,0))
{
$row = mysql_fetch_row($result);
echo $row[0];
echo $row[1]; //按理说是没有必要输出这个的。
}
else echo "error";
}
else
{
echo $num;
echo "error";
}
?>
这样子,返回回来的结果是正确的,但是如果把select里没有status,或者没有echo $row[1],即status,得到的supportId就是错误的,总是0,而我在mysql-front里看到的support字段明明已经修改过来了,返回的却是错的,这个怎么回事呢?