Javascript jqueryajax-如何每隔几秒钟显示同一个表中的其他结果
目前我有静态显示,显示表中最后3项: 数据库表:Javascript jqueryajax-如何每隔几秒钟显示同一个表中的其他结果,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,目前我有静态显示,显示表中最后3项: 数据库表: id | question | answer ------------------------------------------------- 1 | Q? | A? 2 | Q? | A? 3 | Q?
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或其他什么工具来实现它?提前谢谢
编辑(删除旧代码)。
巴哈尔丁·阿扎尔米,这里是我所做的: 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):
//全局变量
var偏移=0;
var pageSize=3;
函数callMyPhpScript(){
var参数=新对象();
parameters.offset=偏移量;
parameters.pageSize=页面大小;
$.ajax(“modules/indexaskrefresh.php”,参数)
.完成(onDone)
.失败(onFail);
}
功能onDone(数据){
//如果未返回任何数据,则应重置偏移量
如果(data.length==0){
偏移量=0;
}否则{
$('#ask').empty.append(data.show('slow');
//我在这里假设数据是格式良好的
//php脚本返回的html代码
偏移量+=3;
}
}
$(函数(){
//应该在配置中移动。。。
var N=5000//将每5秒进行一次呼叫。
setInterval(callMyPhpScript,N);
});
应包含响应的div(在Index.php内):
כדאי לדעת :
没有发生任何事情,比如脚本不工作,没有发布任何东西,或者一些我不知道的事情。所以我假设您希望每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);
});
如果你想要奇特的效果,我建议使用Sry来延迟,我会纠正u,我希望它每次显示其他3项,例如:现在它的show id:1,2,3,然后几秒钟就会显示4,5,6,感谢你的帮助我刚刚编辑了代码,我现在向php脚本传递一个偏移量和一个页面大小参数来获取数据,并在php脚本不返回任何内容时重置偏移量。在最后一种情况下,这意味着没有更多的数据可获取。您还可以使用ajax调用的失败处理程序来重置偏移量,如果发生任何越界类型的异常,您的意思是像第一个脚本中那样的:$.ajax(“modules/indexaskrefresh.php”,parameters),我应该在php文件中放置查询函数吗?我也试过你的方法,但没有什么好的,没有错误,没有什么是的,这就是我的意思。你说什么都没发生是什么意思?你应该有一个php脚本的响应,至少有一个错误。。。php脚本响应的结构是什么?无响应,我将编辑我所做的步骤,再次感谢您。
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;
}
}
$(function() {
// should be move in configuration ...
var N = 5000 // Call will be made every 5 seconds.
setInterval(callMyPhpScript,N);
});