不刷新页面请求数据(Django+ajax+jquery)
2018-01-16 本文已影响3742人
寂寞杰罗
一个简单加法的例子
网上找了些资料,大部分资料由于Django版本低,没法直接用,自己写好做个记录。
做ajax页面请求主要有 点:
urls.py
建立两个url路径,demo_ajax
和demo_add
:
urlpatterns = [
…………
path('demo_ajax/', hc_views.demo_ajax),
path('demo_add/', hc_views.demo_add),
]
demo_ajax
显示加法输入框和按钮,demo_add
导航到views
试图,用于处理加法并返回结果。
views.py
两个试图对应两个urls,demo_ajax
视图直接渲染demo_ajax.html
模板,demo_add
视图处理GET
请求。
def demo_ajax(request):
return render(request, 'demo_ajax.html')
def demo_add(request):
a=request.GET['a']
b=request.GET['b']
if request.is_ajax():
ajax_string = 'ajax request: '
else:
ajax_string = 'not ajax request: '
c = int(a) + int(b)
r = HttpResponse(ajax_string + str(c))
return r
HTML模板页面
<!DOCTYPE html>
<html>
<head>
{% load static %}
</head>
<body>
<p>请输入两个数字</p>
<form action="/demo_add/" method="get">
a: <input type="text" id="a" name="a"> <br>
b: <input type="text" id="b" name="b"> <br>
<p>result: <span id='result'></span></p>
<button type="button" id='sum'>提交</button>
</form>
<script src="{% static 'jquery/jquery.js' %}"></script>
<script>
//这里是关键点 .ready 函数好像监听器。
$(document).ready(function () {
//jq的处理函数,当点击提交按钮时执行。
$("#sum").click(function () {
//得到页面中id为a和b两个标签的值
var a = $("#a").val();
var b = $("#b").val();
//向服务器发送get请求,请求地址为demo_add
$.get("/demo_add/", { 'a': a, 'b': b }, function (ret) {
//请求结果为ret,将请求结果赋值给id为result的节点
$('#result').html(ret)
})
});
});
</script>
</body>
</html>