我真的试图避免让标题太模棱两可,但我不太确定除了这样的网页开发新手之外,还有什么别的措辞。使用Ajax/Django更新动态创建的DIV
这里是场景,我创建了一个模板,通过一个对象列表循环,每个对象都有一个唯一的ID。举例来说,我们称这些对象为“时钟”。为了简单起见,我将模板代码修剪到最低限度。
{% for clock in clock_list %}
<div id="clock_{{ clock.id }}"></div>
{% endfor %}
这些DIV中的每一个都应该显示一个定时器/时钟的排序,这个定时器是唯一的。并且每一个应该在页面上每秒递增(页面上最多运行10个时钟)。
现在我花了很多时间试图掌握如何使用AJAX(并随时告诉我任何更简单/更高效的替代方案),但我不确定是否了解AJAX正常工作。我怎么能够独立地更新每个这些动态创建的div(或者至少让它们都在同一个“setTimeout(function(),1000)”持续时间上更新)
下面是我为AJAX引用的代码:
<script type="text/javascript">
function Ajax(){
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
document.getElementById('element_id').innerHTML=xmlHttp.responseText;
setTimeout('Ajax()',1000);
}
}
xmlHttp.open("GET","content.html",true);
xmlHttp.send(null);
}
window.onload=function(){
setTimeout('Ajax()',1000);
}
我假设的想法是使用 “时钟_ {{vice.id}}” 为“的document.getElementById( 'element_id')的innerHTML = xmlHttp.responstText。 “部分,但是如何使用django的循环模板来获取包含div内容的”clock.html“文件的内容。
如果有人愿意帮忙,需要更多的细节,请说出来。暂时我会继续这个碰碰车编程,直到我有东西展示它:)。
感谢您的回复。我不知道的一件事是这行://可以通过调用$ .ajax或$ .get或任何ajax jquery调用来更新数据。这样做的目的是什么? setInterval(timerTick,1000)不会每秒调用方法吗? countdownTicker.text(new_ticker_text_value)更新div的内容吗?对不起所有的问题,我仍然在拼凑。 – 2011-04-04 00:45:45
对不起。该区域应该是您进行AJAX呼叫的地方。使用jQuery就像做$ .getJSON(url,function(response){})一样简单(假设你正在返回JSON)。当你得到你的回应时,把数据推到定时器数组上。由于javascript代码段中存在{{clock.id}},因此我还编辑了我的条目。 – Max 2011-04-04 00:54:04
应该var countdownTicker = $('。countdown',targetElement); be var countdownTicker = $('。countdown-target',targetElement); ?只是好奇。 – 2011-04-04 01:07:38