Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Ajax/Jquery刷新计时器上的DIV元素_Jquery_Python_Ajax_Django - Fatal编程技术网

Django Ajax/Jquery刷新计时器上的DIV元素

Django Ajax/Jquery刷新计时器上的DIV元素,jquery,python,ajax,django,Jquery,Python,Ajax,Django,我有一个Django项目,我正试图在其上实现ajax。其思想是在数据库中有一个报警列表(大约每5秒外部更新一次) 由于数据库是自动更新的,所以我尝试实现的是每10秒左右刷新一次页面元素,以显示新信息(而不是刷新整个页面)。这已经适用于页面刷新或元刷新(eww..) 这是我迄今为止开始做的,我引用了下面的Stackoverflow问题来帮助我 我已经兜圈子好几天了,一无所获,所以非常感谢你的帮助 index.html <div id="right"> {% include 'ala

我有一个Django项目,我正试图在其上实现ajax。其思想是在数据库中有一个报警列表(大约每5秒外部更新一次)

由于数据库是自动更新的,所以我尝试实现的是每10秒左右刷新一次页面元素,以显示新信息(而不是刷新整个页面)。这已经适用于页面刷新或元刷新(eww..)

这是我迄今为止开始做的,我引用了下面的Stackoverflow问题来帮助我

我已经兜圈子好几天了,一无所获,所以非常感谢你的帮助

index.html

<div id="right">
{% include 'alarmviewer/alarms.html' %}
</div>
Theres alot more in this one, but I didn't include it as it didn't seem necessary. It works without the ajax.
<div class="alarmsheader">.....</div>
视图.py

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^alarms/$', views.alarms, name='alarms'),
)
def alarms(request):
latest_alarm_list = ActiveAlarmsSimple.objects.order_by('severity')[:1000]
active_alarm_list = ActiveAlarmsCount.objects.order_by('-active_alarms')[:1]
return render_to_response('alarmviewer/alarms.html', {'latest_alarm_list':     latest_alarm_list,'active_alarm_list': active_alarm_list,})
script.js

function refresh() {
  $.ajax({
  url: "{% url 'alarmviewer:alarms' %}",
  success: function(data) {
    $('#right').html(data);
  }
 });
};


$(document).ready(function ($) {
  refresh();
  var int = setInterval("refresh()", 3000);
只是一张纸条。如果没有实现ajax,这一切都可以正常工作。手动或使用meta标记每5秒刷新一次页面都有效。我只是在运行服务器时发现了错误

[19/Jan/2015 11:38:22]“GET/alarmviewer/%7B%%20url%20%27alarmviewer:逻辑%27%20%%7D HTTP/1.1”404 2936

我认为这意味着my views.py或my url.py有问题,因为它似乎无法找到它要刷新的alarms.html页面

谢谢你的帮助

在使用Django呈现HTML文档时,您需要在HTML文档中的某个位置使用
“{%url”alarmviewer:alarms“%}”
,而不是在js文件中

尝试在HTML模板中包含脚本之间的javascript,或者在HTML模板中定义一个全局变量:


var ALARM_URL=“{%URL”alarmviewer:报警“%””;


然后将ajax调用url更改为
url:ALARM\u url
。希望这有帮助。

全部修复。非常感谢Ahmed和SirTobi的帮助

最初的问题是,该页面在试图更新时处于404'ing状态。SirTobi的解决方案将其改为HTTP:500'ing(这实际上是一个好迹象!)

然后需要将views.py更改为一种不同的格式,我在这里的粘贴栏中概述了这种格式


希望这可以帮助其他有类似问题的人

当您将“alarms/$”直接放入javascript时会发生什么?为什么使用“{%url”alarmviewer:alarms“%}”而不是“{%url”alarms“%}”?ReferenceError:alarms未定义应用程序中的url文件?我以前曾尝试过同样的结果。我会再给它一次机会,谢谢你的建议!现在是HTTP:500错误,而不是更好的404错误。我认为我的Urls.py或Views.py与我需要研究的内容有关,你需要缩进alarms()函数中的行。我还建议您设置
DEBUG=TRUE
,以便在浏览器中获得更详细的响应;您也可以转到项目的根目录,并调用
python manage.py shell
检查alarms视图是否有效。对不起,Ooops没有接收到这一点。如果在views.py中导入
from django.shortcuts import render
,然后使用初始版本,可以节省一些工作,但是将
render_to_response()
替换为`render(request,'alarmviewer/alarms.html',{yourdict}),因此我用HttpResponse替换了“render_to_response”(如中所示)。渲染是否更有益?谢谢。另外,我实际上会将您的答案标记为正确,因为这是我的重大突破。返回render_to_response('alarmviewer/alarms.html',{'latest_alarm_list':latest_alarm_list,'active_alarm_list':active_alarm_list,}),节省一些时间,并在视图开始时创建一个词典,并添加所有要添加到其中的列表。