Django Ajax/Jquery 刷新计时器上的 DIV 个元素
Django Ajax/Jquery Refreshing DIV elements on Timer
我有一个 Django 项目,我正试图在其上实施 ajax。这个想法是数据库中有一个警报列表(每 5 秒左右从外部更新一次)。
由于数据库是自动更新的,我想要实现的是每 10 秒左右刷新一次页面元素以显示新信息(而不是刷新整个页面)。这已经适用于页面刷新或元刷新 (eww..)
这是我到目前为止已经开始的,我参考了以下我用来尝试帮助我的 Whosebug 问题。
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 页面,这意味着刷新.
感谢您的帮助!
当使用 Django 渲染它时,您将需要 "{% url 'alarmviewer:alarms' %}"
在 HTML 文档中的某处,而不是在 js 文件中。
尝试在 HTML 模板中的 <script>Your script here</script>
之间包含 javascript 或在 HTML 模板中定义一个全局变量:
<script>
var ALARM_URL = "{% url 'alarmviewer:alarms' %}";
</script>
然后将您的 ajax 调用 url 更改为 url: ALARM_URL
。希望这有帮助。
全部修复。非常感谢 Ahmed 和 SirTobi 的帮助!
最初的问题是该页面在尝试更新时出现 404 错误。 SirTobi 的解决方案成功地 HTTP:500'ing 了(这实际上是一个好兆头!)
然后 views.py 需要更改为我在此 pastebin 中概述的不同格式 http://pastebin.com/uXxNzMFP
希望这可以帮助遇到类似问题的其他人
我有一个 Django 项目,我正试图在其上实施 ajax。这个想法是数据库中有一个警报列表(每 5 秒左右从外部更新一次)。
由于数据库是自动更新的,我想要实现的是每 10 秒左右刷新一次页面元素以显示新信息(而不是刷新整个页面)。这已经适用于页面刷新或元刷新 (eww..)
这是我到目前为止已经开始的,我参考了以下我用来尝试帮助我的 Whosebug 问题。
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 页面,这意味着刷新.
感谢您的帮助!
当使用 Django 渲染它时,您将需要 "{% url 'alarmviewer:alarms' %}"
在 HTML 文档中的某处,而不是在 js 文件中。
尝试在 HTML 模板中的 <script>Your script here</script>
之间包含 javascript 或在 HTML 模板中定义一个全局变量:
<script>
var ALARM_URL = "{% url 'alarmviewer:alarms' %}";
</script>
然后将您的 ajax 调用 url 更改为 url: ALARM_URL
。希望这有帮助。
全部修复。非常感谢 Ahmed 和 SirTobi 的帮助!
最初的问题是该页面在尝试更新时出现 404 错误。 SirTobi 的解决方案成功地 HTTP:500'ing 了(这实际上是一个好兆头!)
然后 views.py 需要更改为我在此 pastebin 中概述的不同格式 http://pastebin.com/uXxNzMFP
希望这可以帮助遇到类似问题的其他人