Javascript 每10秒运行一次php脚本
我试图使用setInterval每10秒执行一次php脚本update.php并刷新div id=verification。由于某些原因,setInterval正在阻止脚本运行。如果您对放置\更改setInterval的位置有任何建议,我将不胜感激,因为我被难住了(抱歉,这里是入门级javascript用户)。为了清楚起见,我省略了所有不相关的细节,比如变量Javascript 每10秒运行一次php脚本,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图使用setInterval每10秒执行一次php脚本update.php并刷新div id=verification。由于某些原因,setInterval正在阻止脚本运行。如果您对放置\更改setInterval的位置有任何建议,我将不胜感激,因为我被难住了(抱歉,这里是入门级javascript用户)。为了清楚起见,我省略了所有不相关的细节,比如变量 <div id="verification"></div> <script id="verificatio
<div id="verification"></div>
<script id="verification" language="javascript" type="text/javascript">
$(function() {
$.ajax({
url: 'update.php', //php
data: "", //the data "caller=name1&&callee=name2"
dataType: 'json', //data format
success: function(data) //on receive of reply
{
var foobar = data[2]; //foobar
$('#verification').html("(<b>" + foobar + "</b>)"); //output to html
}
});
});
setInterval(10000); //every 5 secs
</script>
$(函数(){
$.ajax({
url:'update.php',//php
数据:,//数据“caller=name1&&callee=name2”
数据类型:“json”,//数据格式
成功:函数(数据)//收到回复时
{
var foobar=data[2];//foobar
$(“#验证”).html(“+foobar+”);//输出为html
}
});
});
设定间隔(10000)//每5秒
建议/步骤/错误:
ajax
请求setInterval()
每隔n
秒调用一次函数id
应始终是唯一的。您现在正在使用验证
,就好像在使用
和
的id
和language
属性。这些都不是必需的函数更新(){
$.ajax({
url:'update.php',//php
数据:,//数据“caller=name1&&callee=name2”
数据类型:“json”,//数据格式
成功:功能(数据){
//收到答复后
var foobar=data[2];//foobar
$(“#验证”).html(“+foobar+”);//输出为html
}
});
}
$(文档).ready(更新);//页面加载时调用
// ^^^^^^
设置间隔(更新,10000)//每10秒
// ^^^^^^
您缺少功能块:
setInterval(function() {
// to do
}, 5000);
我的建议是在运行ajax时使用setTimeout
,但不确定它是否能在5秒内完成。如果你想这样做:
var dispatchUpdates=function(){
设置超时(pullUpdates,5000);
};
var pullUpdates=函数(){
$.ajax({
url:'update.php',
数据:“,
数据类型:“json”,
成功:功能(数据){
var foobar=数据[2];
$(“#验证”).html(“+foobar+”);
dispatchUpdates();//下一次更新
},
错误:函数(){
dispatchUpdates();//重试
}
});
};
$(发送更新)//页面加载
setInterval()
将一个函数(它应该执行)作为第一个参数
试试这个:
setInterval(function(){
$.ajax({
url: 'update.php', //php
data: "", //the data "caller=name1&&callee=name2"
dataType: 'json', //data format
success: function(data) //on receive of reply
{
var foobar = data[2]; //foobar
$('#verification').html("(<b>"+foobar+"</b>)"); //output to html
}
});
}, 10000);
setInterval(函数(){
$.ajax({
url:'update.php',//php
数据:,//数据“caller=name1&&callee=name2”
数据类型:“json”,//数据格式
成功:函数(数据)//收到回复时
{
var foobar=data[2];//foobar
$(“#验证”).html(“+foobar+”);//输出为html
}
});
}, 10000);
您使用setInterval的方式不正确-您可以在此处阅读:
另外请注意,AJAX调用是异步的——当程序继续运行时,并不意味着之前的AJAX调用已经结束。您可以使用一些jQuery机制(如绑定或使用等)来“等待”AJAX完成。您缺少了
setInterval
的函数参数。这应该会有所帮助:您不是在几个小时前发布了一个非常类似的问题吗?区别在于它使用了setTimeout
而不是setInterval
;但这并没有起作用。它被标记为一个重复的问题,这是不正确的。我需要的不仅仅是setInterval的基本语法帮助。10秒是如何变成5秒的?@Barmar我看到评论说5秒
so。我已更新为使用10秒。您还可以使用setTimeout
而不是setInterval
在上一个回调函数中安排下一个调用。
setInterval(function(){
$.ajax({
url: 'update.php', //php
data: "", //the data "caller=name1&&callee=name2"
dataType: 'json', //data format
success: function(data) //on receive of reply
{
var foobar = data[2]; //foobar
$('#verification').html("(<b>"+foobar+"</b>)"); //output to html
}
});
}, 10000);