javascript中setTimeout每隔1秒调用一次ajax,但回调函数只调用一次。求解。。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中setTimeout每隔1秒调用一次ajax,但回调函数只调用一次。求解。。相关的知识,希望对你有一定的参考价值。
部分代码如下: function getUsers()//查询所有在线用户
var url="chat-room?"+Math.random();
httprequest.onreadystatechange=userlist;
httprequest.open("get",url,true);
httprequest.send(null);
function userlist()
if(httprequest.readyState==4)
if(httprequest.status==200)
var s=httprequest.responseText;
//由此得到所有在线用户
第一次没问题,我今天忙了一天之这个了,我每一秒查询一下在线的用户,但第一次行。其他用户下线后,查询到了,但返回不到回调函数上。
刚有人指点我一下,就是在回调函数里调用getusers(),不用那个timer,等明天我试试。
还有发送消息时 定义url="sendmessage?message='房价的快速路附近'&touserid=1000"
总出现中文乱码,请问有什么好的办法?
var url="chat-room?"+Math.random();
httprequest.onreadystatechange=userlist;
httprequest.open("get",url,true);
httprequest.send(null);
window.setTimeout(getUsers,1000)
追问
function timer()
getUsers();
setTimeout("timer()",1000);
我已经有timer了
可以不断的查询了,但只执行一次回调函数
httprequest.open("get",url,false);//改成同步执行看看!
追问试过了,不行
参考技术B 这个不大懂哦 参考技术C 看不懂55 参考技术D 你得到第一次正确的结果了么? 第5个回答 2011-09-01 把代码贴全了再说,你是想做AJAX长轮询吧?本回答被提问者采纳使用javascript在django中每隔几秒刷新一个特定的div
【中文标题】使用javascript在django中每隔几秒刷新一个特定的div【英文标题】:Refreshing a specific div every few seconds in django using javascript 【发布时间】:2017-01-18 22:24:06 【问题描述】:我正在尝试使用 javascript 在我的 HTML 页面中每隔几秒刷新一次表格的内容。尝试刷新 div 时,我不断收到 500 错误,内部服务器错误。有人可以解释这不起作用的原因吗?我用过这个:Refresh div using JQuery in Django while using the template system 作为我正在做的事情的参考。页面第一次加载完美,只是刷新失败。
这是我的代码:
urls.py
url(r'^specialScoreboard/$', views.specialScoreboard.as_view(), name='specialScoreboard'),
url(r'^specialScoreboardDiv/$', views.specialScoreboardDiv , name='specialScoreboardDiv'),
views.py
class specialScoreboard(generic.ListView):
template_name = 'CTF/specialScoreboard.html'
context_object_name = 'teams'
@method_decorator(login_required)
@method_decorator(never_ever_cache)
def dispatch(self, request, *args, **kwargs):
if getAnyActiveGame and request.user.is_staff:
return super(specialScoreboard, self).dispatch(request, *args, **kwargs)
else:
return HttpResponseRedirect(reverse('CTF:no_active_game'))
def get_queryset(self):
"""
ordering teams by score
"""
game = getAnyActiveGame()
teams = get_teams_from_game(game)
return sorted(teams, key=lambda a: a.get_score(game), reverse=True)
def specialScoreboardDiv():
game = getAnyActiveGame()
teams = get_teams_from_game(game)
sortedList = sorted(teams, key=lambda a: a.get_score(game), reverse=True)
return render_to_response('CTF/specialscoreboardDiv.html' , 'sortedList' :sortedList)
scoreboardRefresh.js + scoreboardDiv.html
<script>
var scoreboardURL = '% url '
CTF: specialScoreboardDiv ' %';
function refresh()
$.ajax(
url: scoreboardURL,
success: function(data)
$('#scoreboardDiv').html(data);
);
;
$(document).ready(function($)
refresh();
setInterval("refresh()", 3000);
)
</script>
<div class="panel panel-info">
<div class="panel-heading">Scoreboard</div>
<div class="panel-body">
<div class="table-striped">
<table id="scoreboardDiv" class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>Team Name</th>
<th>Score</th>
</tr>
</thead>
<tbody>
% for team in teams %
<tr>
<td>forloop.counter</td>
<td>team.name</td>
<td>team|getScoreTeam</td>
</tr>
% endfor %
</tbody>
</table>
</div>
</div>
</div>
我似乎无法格式化错误,这是它的图片:http://i.imgur.com/Yc11juA.png http://i.imgur.com/QluqZyc.png http://imgur.com/QluqZyc
【问题讨论】:
错误说明了什么? 您的 JS 开头的scoreboardURL
代码是怎么回事?这根本没有意义。
另外,请修复views.py中的缩进。哪些方法是类的一部分,哪些不是?
实际上,看起来我们需要一个服务器错误的文本。
我加了一张错误的图片,我好像无法格式化,总是看不懂。
【参考方案1】:
您的 django 视图不接受任何参数,但通常 django 会尝试将请求参数传递给它。从您在 cmets 中提供的屏幕截图中的错误来看,这似乎是您的问题。
我认为你的错误可以通过让你的视图函数接受这个参数来解决:
def specialScoreboardDiv(request):
game = getAnyActiveGame()
...
【讨论】:
它不再出错但也不更新表格内容:( 那么,接下来你需要找出问题出在哪里。您的视图是否返回它应该返回的 html?您的 JS 是否获得正确的 html?是否触发了成功回调?以此类推。 这是数据的图片:i.imgur.com/IptrwHd.png 在 ajax 函数中,它确实返回了正确 div 的 html,但没有更新它。我错过了什么吗?我发送的 html 页面是 specialScoreboardDiv.html以上是关于javascript中setTimeout每隔1秒调用一次ajax,但回调函数只调用一次。求解。。的主要内容,如果未能解决你的问题,请参考以下文章