Skip to main content
 首页 » 编程设计

jquery之Django Ajax/Jquery 在定时器上刷新 DIV 元素

2024年10月25日34think

我有一个 Django 项目,我正在尝试在其上实现 ajax。这个想法是数据库中有一个警报列表(每 5 秒左右从外部更新一次)。

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

这是我到目前为止已经开始的,我引用了以下我用来尝试帮助我的 Stackoverflow 问题。

Refresh a div to shows new rating in Django using JQuery and AJAX

Refresh a div in Django using JQuery and AJAX

几天来我一直在兜圈子,一无所获,非常感谢您的帮助。

index.html

<div id="right"> 
{% include 'alarmviewer/alarms.html' %} 
</div> 

alarms.html

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> 

urls.py

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^alarms/$', views.alarms, name='alarms'), 
) 

views.py

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,这一切都可以正常工作。手动或使用元标记每 5 秒刷新一次页面。我只是在运行服务器时遇到错误

[19/Jan/2015 11:38:22] "GET/alarmviewer/%7B%%20url%20%27alarmviewer:logical%27%20%%7D HTTP/1.1"404 2936

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

感谢您的帮助!

请您参考如下方法:

您将需要 "{% url 'alarmviewer:alarms' %}"使用 Django 呈现时在 HTML 文档中的某处,而不是在 js 文件中。

尝试在 <script>Your script here</script> 之间包含 javascript在 HTML 模板中或在 HTML 模板中定义一个全局变量:

<script> var ALARM_URL = "{% url 'alarmviewer:alarms' %}"; </script>

然后将您的 ajax 调用 url 更改为 url: ALARM_URL .希望这会有所帮助。