本人想实现一个自动刷新从数据库中获取数据的功能 。用的是jquery+ajax+php数据库是MYSQL
代码 :home.php
<script type="text/javascript">
//开始自动刷新
$(function update()
{
timeout = window.setInterval("doRecord()", 4000);//设定4秒调用一次update.asp页面
});function doRecord()
{
$.ajax({
type: "post",
url : "inc/stealRecord.php",
dataType:'json',
success: function (json)
{
$("#demo").html(json.message);
}
});
}
</script>
stealRecord.php<?php
session_start();
header("content-type:text/html; charset=gbk");
// 连接数据库
include "config.ini";
//选择数据库
mysql_select_db($GLOBALS['mysql_database'], $GLOBALS['con']);
$steal_result = mysql_query("SELECT * FROM tb_sheepinfo where stealName='".$_SESSION['name']."'");
while($row = mysql_fetch_array($steal_result))
{
$stolenName=$row['stolenName'];
echo "{message:'$stolenName'}";
}
?>代码就是这样数据库都没问题 如果用if来判断就能显示结果但是只能输出一个结果 ,为什么用while却什么都不显示了?
大家帮帮忙啊 谢谢了!
代码 :home.php
<script type="text/javascript">
//开始自动刷新
$(function update()
{
timeout = window.setInterval("doRecord()", 4000);//设定4秒调用一次update.asp页面
});function doRecord()
{
$.ajax({
type: "post",
url : "inc/stealRecord.php",
dataType:'json',
success: function (json)
{
$("#demo").html(json.message);
}
});
}
</script>
stealRecord.php<?php
session_start();
header("content-type:text/html; charset=gbk");
// 连接数据库
include "config.ini";
//选择数据库
mysql_select_db($GLOBALS['mysql_database'], $GLOBALS['con']);
$steal_result = mysql_query("SELECT * FROM tb_sheepinfo where stealName='".$_SESSION['name']."'");
while($row = mysql_fetch_array($steal_result))
{
$stolenName=$row['stolenName'];
echo "{message:'$stolenName'}";
}
?>代码就是这样数据库都没问题 如果用if来判断就能显示结果但是只能输出一个结果 ,为什么用while却什么都不显示了?
大家帮帮忙啊 谢谢了!
应该是:{'xxx':'xx','xxx':'xx','xxx':'xx',....}
而你的是:{'xxx':'xx'}{'xxx':'xx'}{'xxx':'xx'}while里面的应该这样写:$out = array();
while(....){
$out[] = $row['stolenName'];
}
echo $outstr = json_encode($out);
if是一次性判断,自然只能输出一次啦
while是只要满足,就不断的运行if和while自然不能等同
根据三楼所说的修改如下:$("#demo").html(json.outstr);stealRecord.phpmysql_select_db($GLOBALS['mysql_database'], $GLOBALS['con']);
$steal_result = mysql_query("SELECT * FROM tb_sheepinfo where stealName='".$_SESSION['name']."'");
$out = array($steal_result);
while($row = mysql_fetch_array($steal_result))
{
$out[] = $row['stolenName'];
}
echo $outstr = json_encode($out);
依然没出现效果啊
谢谢大家帮忙啊
另外怎么会没所谓呢?电脑是死心眼,你的客户端定义了json,你传个不是json的东西过去,不能解析自然就是无结果,这就是“一块钱俩,五毛钱不卖”
firefox: firebug(控制台和网络两个选项均可), httpfox
http协议监听: httplook, charles
// 那么你敢在这里修改下吗?活人难道能叫尿憋死了????
while($row = mysql_fetch_array($steal_result))
{
$out[] = $row['stolenName'];
}
echo $outstr = json_encode(array('message'=>$out));
message 为空啊
ajax, js的timer, json, php的while, mysql的select……貌似你没多少个是通晓的我怎么看 你的表中stolenName=bssj就一条数据,你还想输出多少?我估计即使这个解决了,还会有其它问题冒出来
既然来了 就说点有用的 别扯淡 即使我问了不行吗 不会还不给问吗 ? 擦
楼主不要激动,看看这条语句;
$steal_result = mysql_query("SELECT * FROM tb_sheepinfo where stealName='".$_SESSION['name']."'");
根据你的数据图结构,stealName确实能返回多条!但是请问一下你的echo $_SESSION['name'];能正确输出值吗?如果可以,SQL部分就没有问题了。 另外在PHP部分输出$outstr ,看看组织结构后是怎么样的一个JSON对象,是不是只有一条数据或多条!
你返回的结构我觉得有点不对: {"message":["bssj"]};正常结构应该是:{"message":"bssj"},其返回值json.message将是一个数组了,按理用while说应该也能返回才对!
如果只执行一次,则是正确的
js:
var p = {message:'$stolenName'};如果多次执行,就错了
js:
var p = {message:'$stolenName'}{message:'$stolenName'}{message:'$stolenName'}
至少应该是
var p = [{message:'$stolenName'},{message:'$stolenName'},{message:'$stolenName'}]