jQuery AJAX - 如何显示每隔几秒其他结果相同的表

时间:2014-02-18 16:25:27

标签: javascript php jquery ajax

目前我有静态节目,wwhich显示表中的3个最后一项:

数据库表:

  id        |        question       |      answer  
 -------------------------------------------------
 1          |           Q?          |     A?
 2          |           Q?          |     A?
 3          |           Q?          |     A?
 4          |           Q?          |     A?
 5          |           Q?          |     A?
 6          |           Q?          |     A?

到目前为止,我展示了PHP foreach,最后3项。

我希望它会动态地显示每个3项具有良好动画并且将永远循环。

我怎样才能用ajax或者什么来做?提前谢谢。

编辑(删除旧代码)。


Bahaaldine Azarmi,我在这里做了什么:

1. 我创建了一个名为indexaskrefresh.php的新php文件,在php中插入了以下php代码:

$query = "SELECT * FROM que limit " .$offset. "," .$pageSize ;
mysql_query("SET NAMES 'utf8'");

$result = mysql_query($query, $func->connection);

if(!$result) //ERROR IN YOUR SQL QUERY
return false;

if(mysql_num_rows($result)==0) //NO ROWS IN TABLE pages
return false;

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) // CHANGE THE RESULT TO 2 DIMMENSIONAL ARRAY
{
     $returned_array[] = $row;
}

return $returned_array;

2. 接下来在我的索引文件中,我创建了名为ask的新div,并在页面顶部创建了以下新的javascript标记(Index.php):

<script type="text/javascript">

 // global vars
var offset = 0;
var pageSize = 3;


function callMyPhpScript() {
    var parameters = new Object();
    parameters.offset = offset;
    parameters.pageSize = pageSize;
    $.ajax("modules/indexaskrefresh.php", parameters)
        .done(onDone)
        .fail(onFail);
}


function onDone(data) {
    // if no data was returned then you should reset the offset
    if ( data.length == 0 ) {
        offset = 0;
    } else {
        $('#ask').empty.append(data).show('slow');
        // I assume here that data is well formed 
        // html code returned by you php script
        offset += 3;
    }
}


 $(function() {
// should be move in configuration ...
var N = 5000 // Call will be made every 5 seconds. 
setInterval(callMyPhpScript,N);
  });


</script>

应包含响应的div(在Index.php内部):

   <div id="ask" style="float:right;">
         <h2 style="margin-right:15px;"> כדאי לדעת :</h2>
            <?php
                 $i = 0;
                  $len = count($que);
                    foreach($que as $key=>$value)
                    {   
                      echo '<span style="color:blue;font-weight:bold;padding:5px;">'.$value['que'].'</span><br><span style="color:green;font-weight:bold;padding:5px;">'.$value['ans'].'</span>';

                     if ($i == $len - 1) {

                        }else{
                        echo '<hr style="margin-right:25px;">';
                        }

                       $i++;
                    }
            ?>
          </div>

没有任何事情发生,就像脚本不工作不发布任何东西或者我不知道的东西......

1 个答案:

答案 0 :(得分:1)

所以我假设您希望每隔N秒调用一次PHP函数并刷新最后3项。

这是一种方法:

创建一个javascript函数,用于调用并发送偏移量和页面大小。 偏移量将是SQL查询中的起始ID和页面大小限制:

// global vars
var offset = 0;
var pageSize = 3;


function callMyPhpScript() {
    var parameters = new Object();
    parameters.offset = offset;
    parameters.pageSize = pageSize;
    $.ajax("http://myhost:myport/pathToMyPhpFunction", parameters)
        .done(onDone)
        .fail(onFail);
}

在你的php脚本中,你应该解析参数并在你的SQL查询中使用它,如下所示:

$query = "SELECT * FROM que limit " .$offset. "," .$pageSize ;
// That will return records from offset+1 to pageSize

实现onDone函数以将结果附加到HTML代码中

function onDone(data) {
    // if no data was returned then you should reset the offset
    if ( data.length == 0 ) {
        offset = 0;
    } else {
        $('#myContainer').empty.append(data).show('slow');
        // I assume here that data is well formed 
        // html code returned by you php script
        offset += 3;
    }
}

然后在你的html代码中,当页面加载时,调用setTimeout函数 每N秒拨打一次电话:

$(function() {
    // should be move in configuration ...
    var N = 5000 // Call will be made every 5 seconds. 
    setInterval(callMyPhpScript,N);
});

如果你想要花哨的效果,我建议使用Animate.css