[django] ajax
AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。
AJAX 不是新的编程语言,而是一种使用现有标准的新方法。
AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。(这一特点给用户的感受是在不知不觉中完成请求和响应过程)
AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
- 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
- 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。
例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AJAX局部刷新实例</title>
</head>
<body>
{% csrf_token %}
<input type="text" id="i1">+
<input type="text" id="i2">=
<input type="text" id="i3">
<input type="button" value="AJAX提交" id="b1">
<script src="/static/jquery-3.2.1.min.js"></script>
<script>
$("#b1").on("click", function () {
var csrftoken = $("[name='csrfmiddlewaretoken']").val();
$.ajax({
url:"/ajax_add/",
type:"POST",
{#data: {"i1": $("#i1").val(), "i2": $("#i2").val(), "csrfmiddlewaretoken": csrftoken},#}
data:{"i1":$("#i1").val(),"i2":$("#i2").val()},
headers:{'X-CSRFToken': csrftoken},
success:function (data) {
$("#i3").val(data);
}
})
})
</script>
</body>
</html>
views
def ajax_test(request):
if request.method == "POST":
i1 = request.POST.get("i1")
i2 = request.POST.get("i2")
i3 = int(i1) + int(i2)
return JsonResponse(i3, safe=False)
return render(request, "Test/ajax_test.html")