Django1.6 + jQuery Ajax + JSON 实现页面局部实时刷新
最近微信公众帐号要扩展做一个签到系统,签到结果在一个网页上实时更新,即页面局部刷新。我想用Ajax来实现,之前公众帐号是用的Django搭的,我查找了Django的官方文档,没有封装Ajax。网上有各种方法,眼花缭乱。之前在图书馆借了本书《Django Web 开发指南》里面,有Ajax的实例,但是旧版本的Django,代码没法运行,但是里面倒是提供一种方法——把数据翻译成JSON格式,然后按照我们的格式返回字符串结果,在写到HttpResponse里去。我借鉴了其中的方法。查了Django的官方文档,我修改了书中的代码,可以正常运行。自己也写了一个demo。
我的直接简单地在views.py把数据存在一个list中,然后用JSON格式储存,写到HttpResponse中
from django.http import HttpResponse
from django.shortcuts import render_to_response
import json def data(request, id):
rlist = [['Jack', 'Chinese'], ['Mike', 'English'], ['Bob', 'Math'], ['Frank', 'Art'], ['Lucy', 'Music']]
rlist2 = []
rlist2.append({"name" : rlist[int(id)][0], "subject" : rlist[int(id)][1]})
rjson = json.dumps(rlist2)
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.write(rjson)
return response def update(request):
return render_to_response('update.html')
url.py中有两个地址,一个是展示页面,一个是数据保存地址
from django.conf.urls import patterns, url
from AjaxTest.views import data, update urlpatterns = patterns('',
url(r'^data/(?P<id>\d+)/$', data),
url(r'^update/', update)
)
访问http://127.0.0.1:8000/data/id/, id是数字,可获取对应JSON数据

这一步很关键,接下来我们编写和这个API视图交互Javascript,并用它来响应页面。我用jQuery中的ajax,每隔3秒执行一次 update() 函数,用jQuery的 getJSON 方法,发送URL请求,解析结果,这样完成Ajax,Javascript代码如下
function update(id) {
$.getJSON("/data/" + id + "/",function(data) {
$.each(data, function(){
$("#content").html('<p>' + this.name + ' is a ' + this.subject + ' teacher.</p>');
});
});
}
function timeDown(limit, i) {
limit--;
if (i > 4) {
i = 0;
}
if (limit < 0) {
limit = 3;
update(i);
i++;
}
$('#time').text(limit + '秒后刷新');
setTimeout(function() {
timeDown(limit, i);
}, 1000)
}
$(document).ready(function() {
timeDown(3, 0)
})
html页面代码
<html>
<head>
<title>Ajax Test</title>
<script src="http://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
function update(id) {
$.getJSON("/data/" + id + "/",function(data) {
$.each(data, function(){
$("#content").html('<p>' + this.name + ' is a ' + this.subject + ' teacher.</p>');
});
});
}
function timeDown(limit, i) {
limit--;
if (i > 4) {
i = 0;
}
if (limit < 0) {
limit = 3;
update(i);
i++;
}
$('#time').text(limit + '秒后刷新');
setTimeout(function() {
timeDown(limit, i);
}, 1000)
} $(document).ready(function() {
timeDown(3, 0)
})
</script>
</head>
<body>
<h1>Ajax Test</h1>
<p id="time"></p>
<div id="content"></div>
</body>
</html>
运行服务器,访问http://127.0.0.1:8000/update/,每隔3秒刷新一次更新内容,如下图

Demo代码下载地址
http://files.cnblogs.com/stwzhong/AjaxTest.zip
《Django Web 开发指南》书上修改后代码下载地址
http://files.cnblogs.com/stwzhong/Liveblog.zip
Django1.6 + jQuery Ajax + JSON 实现页面局部实时刷新的更多相关文章
- Jquery Ajax调用aspx页面方法
Jquery Ajax调用aspx页面方法 在asp.net webform开发中,用jQuery ajax传值一般有几种玩法 1)普通玩法:通过一般处理程序ashx进行处理: 2)高级玩法:通过as ...
- Jquery+ajax+json+servlet原理和Demo
Jquery+ajax+json+servlet原理和Demo 大致过程: 用户时间点击,触发js,设置$.ajax,开始请求.服务器响应,获取ajax传递的值,然后处理.以JSON格式返回给ajax ...
- php+jquery+ajax+json简单小例子
直接贴代码: <html> <title>php+jquery+ajax+json简单小例子</title> <?php header("Conte ...
- 基于Jquery+Ajax+Json+存储过程 高效分页
在做后台开发中,都会有大量的列表展示,下面给大家给大家分享一套基于Jquery+Ajax+Json+存储过程高效分页列表,只需要传递几个参数即可.当然代码也有改进的地方,如果大家有更好的方法,愿留下宝 ...
- jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法
1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是“a ...
- 练习 jquery+Ajax+Json 绑定数据 分类: asp.net 练习 jquery+Ajax+Json 绑定数据 分类: asp.net
练习 jquery+Ajax+Json 绑定数据
- 如何构建ASP.NET MVC4&JQuery&AJax&JSon示例
背景: 博客中将构建一个小示例,用于演示在ASP.NET MVC4项目中,如何使用JQuery Ajax. 步骤: 1,添加控制器(HomeController)和动作方法(Index),并为Inde ...
- Jquery Ajax Json ashx 实现前后台数据传输
经过一个多星期的研究,各种查找资料终于自己实现了Jquery Ajax Json ashx 的前后台数据交流功能 首先一点,Ajax只能对应一个ashx文件,多余两个,如果打开异步传输的async: ...
- Django1.7+JQuery+Ajax集成小例子
Ajax的出现让Web展现了更新的活力,基本所有的语言,都动态支持Ajax与起服务端进行通信,并在页面实现无刷新动态交互. 下面是散仙使用Django+Jquery+Ajax的方式来模拟实现了一个验证 ...
随机推荐
- springMvc 框架
第一步:发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求HandlerMapping查找 Handler 可以根据xml配置.注解进行查找 第三步:处理器映射器Han ...
- Unity Button延迟功能
有时候Button点下去不是要求立即反应的,而是先有个特别短的动画,再反应. 实现: 继承Button,然后重写一下OnPointerClick,利用协程来延迟. using System.Colle ...
- JSON在JS中的应用
一. JSON在JS中的应用: 首先解释下JSON对象与普通js对象字面量定义时格式的区别: Js对象字面量定义格式: var person = { name:"Wede", ag ...
- 使用 pdb 进行调试
使用 pdb 进行调试 pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变 ...
- Python中import导入上一级目录模块及循环import问题的解决
转自:https://www.cnblogs.com/sjy18039225956/p/9265461.html 使用python进行程序编写时,经常会使用第三方模块包.这种包我们可以通过python ...
- Div实现水平垂直居中
在实际应用中很多地方不仅要求实现元素的水平居中或者垂直居中效果,还可能会在水平方向和垂直方向上都要实现居中效果,下面就简单介绍几种元素水平垂直居中的方法(注:不同的方法会存在一些优缺点以及兼容性问题) ...
- requests模块高级操作之cookie
一.cookie 存储在客户端的键值对,可以让服务端记录客户端相关状态. 如何处理cookie? 手动处理: 将抓包工具中的请求头信息中的cookie键值拷贝到header中 自动处理:session ...
- vs 调试时 QuickWatch 不能计算变量值
尝试下这个方法:DEBUG- -> Options and Settings--> Symbols中查看缓存路径是否设置为当前程序的bin文件然后将Debug-->Options a ...
- 解决 vue 使用 element 时报错ERROR in ./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf
在 webpack.config.js 中加入这个依赖 { test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/, loader: 'file-loader' }
- WaitType:ASYNC
项目组有一个数据库备份的Job运行异常,该Job将备份数据存储到remote server上,平时5个小时就能完成的备份操作,现在运行19个小时还没有完成,backup命令的Wait type是 AS ...