本人想实现一个自动刷新从数据库中获取数据的功能 。用的是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却什么都不显示了?
大家帮帮忙啊 谢谢了!

解决方案 »

  1.   

    我的疑问是,你循环的echo之间没有分割字符的么?客户端怎么判断是两个?
      

  2.   

    json的数据格式搞错了吧
    应该是:{'xxx':'xx','xxx':'xx','xxx':'xx',....}
    而你的是:{'xxx':'xx'}{'xxx':'xx'}{'xxx':'xx'}while里面的应该这样写:$out = array();
    while(....){
      $out[] = $row['stolenName'];
    }
    echo $outstr = json_encode($out);
      

  3.   

    晕,
    if是一次性判断,自然只能输出一次啦
    while是只要满足,就不断的运行if和while自然不能等同
      

  4.   

    怎么区分倒无所谓 我的重点是用while输出结果 我也知道if和while不同 但是为什么用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);
       
    依然没出现效果啊   
      谢谢大家帮忙啊
      

  5.   

    你用什么测试呢?直接用ajax?ajax:客户端->服务器端->服务器端这个过程至少有两次传送,理应断开逐个测试
    另外怎么会没所谓呢?电脑是死心眼,你的客户端定义了json,你传个不是json的东西过去,不能解析自然就是无结果,这就是“一块钱俩,五毛钱不卖”
      

  6.   

    你可以用http监听工具看看你的ajax请求返回的内容到底是什么, 来看看到底是哪里出的错.http监听工具:
    firefox: firebug(控制台和网络两个选项均可), httpfox
    http协议监听: httplook, charles
      

  7.   

    啊 那么深奥 我不懂啊  我现在就想输入结果就行啊  firefox我用了 找不到啊 "enabling javascript debugger to support console" 翻译是“让javascript调试器来支持控制台“ 怎么搞啊 
      

  8.   

    firebug和httpfox是插件,需要安装
      

  9.   

    // 你js是要json的message信息$("#demo").html(json.message);
    // 那么你敢在这里修改下吗?活人难道能叫尿憋死了????
      while($row = mysql_fetch_array($steal_result))
    {
    $out[] = $row['stolenName'];
    }
    echo $outstr = json_encode(array('message'=>$out));
      

  10.   

    用firefox查看结果是
    message 为空啊  
      

  11.   

    这叫未学走路,就学跑步你这里涉及多个东西
    ajax, js的timer, json, php的while, mysql的select……貌似你没多少个是通晓的我怎么看 你的表中stolenName=bssj就一条数据,你还想输出多少?我估计即使这个解决了,还会有其它问题冒出来
      

  12.   

    看你前面的程序sql语句取值是从session里面来的,下一个要问session么?
      

  13.   

    晕 这事我截图截的 表里确实有多条语句 session没有错 有值  我试过 。
    既然来了 就说点有用的  别扯淡  即使我问了不行吗  不会还不给问吗 ? 擦
      

  14.   


    楼主不要激动,看看这条语句;
       $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说应该也能返回才对!
      

  15.   

    echo "{message:'$stolenName'}";
    如果只执行一次,则是正确的
    js:
    var p = {message:'$stolenName'};如果多次执行,就错了
    js:
    var p = {message:'$stolenName'}{message:'$stolenName'}{message:'$stolenName'}
    至少应该是
    var p = [{message:'$stolenName'},{message:'$stolenName'},{message:'$stolenName'}]