现在写Web,不用Ajax怎么可以呢!!
用Django肯定不能完全都让Django加载呀,而且老是跳页面对用户也不好!!
因此,我们采取Ajax来实现:
以加法为例子。
urls.py中注册路由:
path('add/', views.add, name='add'),
视图层views.py将界面写一下:
def index(request):
return render(request, 'tttt/index.html')
def 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
然后是界面,写在模版中:
<!DOCTYPE html>
<html>
<body>
<p>请输入两个数字</p>
<form action="/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="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#sum").click(function(){
var a = $("#a").val();
var b = $("#b").val();
$.get("/t/add/",{'a':a,'b':b}, function(ret){
$('#result').html(ret)
})
});
});
</script>
</body>
</html>
{# $.ajax({#}
{# url: "/t/add/",#}
{# type: "POST",#}
{# data: "a=" + a + "&b=" + b,#}
{# success: function (data) {#}
{# $('#result').html(data)#}
{# }#}
{# });#}
使用.ajax的话,会有个CSRF问题,以后解决!
运行起来,结果如下:
这样等于就实现了局部刷新。