2022暑期实践(Django教程学习记录)(第五周1)P57Ajax1

本文介绍了如何使用Ajax进行无刷新数据请求,避免页面刷新导致的数据丢失。通过jQuery库实现Ajax请求,展示了POST方法的使用,并讲解了如何在Django中处理Ajax请求,包括禁用csrf_token验证。同时,提供了基于DOM和jQuery的事件绑定方法,以及相应的后端响应处理,返回JSON数据。
摘要由CSDN通过智能技术生成

P57Ajax
浏览器通过url(GET方法)和表单形式(POST方法)向服务器发送请求时,页面会刷新,数据会消失

Ajax向后台发送请求,发送数据不会刷新页面
依赖jQuery
ajax代码

$.ajax({
	url:'xxx',
	type:'post',
	data:{
		n1:123,
		n2:'abc',
	},
	success:function(res){
		console.log(res);
	}
})

免除ajax的post方式的csrf_token认证

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def task_ajax(request):
    print(request.GET)
    return HttpResponse("请求发到后端了")

绑定事件的方式:
1.基于dom方式

<input type="button" class="btn btn-primary" value="点击" onclick="clickMe();"/>

2.基于jQuery方式

{% extends 'layout.html' %}


{% block content %}
    <div class="container">
        <h1>任务列表</h1>
        <h3>示例1</h3>
{#        <input type="button" class="btn btn-primary" value="点击" onclick="clickMe();"/>#}
        <input type="button" class="btn btn-primary" id="btn1" value="点击" />

    </div>
{% endblock %}

{% block js %}
    <script type="text/javascript">
        {#基于dom方法绑定事件#}
        {#function clickMe(){#}
        {#    console.log("点击了按钮");#}
        {#    $.ajax({#}
        {#        url: '/task_ajax',#}
                {#type: 'get',#}
        {#        type: 'post',#}
        {#        data: {#}
        {#            n1: 123,#}
        {#            n2: 'abc',#}
        {#        },#}
        {#        success: function (res){#}
        {#            console.log(res);#}
        {#        }#}
        {#    })#}
        {# } #}

        $(function(){
            //页面框架加载完成后自动执行
            bindBtn1Event();
        })

        function bindBtn1Event() {
            $("#btn1").click(function () {
                $.ajax({
                    url: '/task_ajax/',
                    type: 'post',
                    data: {
                        n1: 123,
                        n2: 'abc',
                    },
                    {#将后端传过来JSON的转成字符串反序列化成JSON对象,使得前端可以直接调用#}
                    dataType: "JSON",
                    success: function (res) {
                        console.log(res);
                        console.log(res.data)
                    }
                })
            })
        }
    </script>
{% endblock %}

后端代码:

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def task_ajax(request):
    print(request.GET)
    data_dict = {
        "status": True,
        "data": [11, 22, 33, 45],
    }
    # import json
    # json_string = json.dumps(data_dict)
    # return HttpResponse(json)
    # 可以利用django自带模块转成json格式
    from django.http import JsonResponse
    return JsonResponse(data_dict)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值