首页 > Web开发 > 详细

ajax

时间:2020-02-28 15:41:27      阅读:62      评论:0      收藏:0      [点我收藏+]

1、前端有哪些方式可以向后端发请求

浏览器窗口手动输入网址       get请求
a标签的href属性            get请求
form表单                  get/post请求(默认是get请求)
ajax                     get/post请求


2、ajax的特点

异步提交
局部刷新


3、ajax基本语法

// 提交的地址(url)
// 提交的方式(type)
// 提交的数据(data)
// 回调函数(success)


// 例1:前端往后端发送数据,后端处理后再返回

// urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^index/‘, views.index),

]

// views.py
from django.shortcuts import render, HttpResponse

# Create your views here.
def index(request):
    if request.method == ‘POST‘:
        print(request.POST)
        name = request.POST.get("name")
        password = request.POST.get("password")
        return HttpResponse("name:" + name + " " + "password:" + password)
    return render(request, ‘index.html‘)

// index.html
<body>
<button id="d1">选我</button>

<script>
    $(#d1).click(function () {
        $.ajax({
            // 提交的地址
            url:/index/,
            // 提交的方式
            type:post,
            // 提交的数据
            data:{name:jason,password:123},
            // 回调函数
            // data接收的就是异步提交返回的结果
            success:function (data) {
                alert(data)
            }
        })
    })
</script>
</body>


点击按钮后,结果:

技术分享图片


例2:前端有三个输入框,前两个框中的值相加,显示在第三个框中

views.py

def index(request):
    if request.method == POST:
        i1 = request.POST.get("i1")
        i2 = request.POST.get("i2")
        res = int(i1) + int(i2)
        return HttpResponse(res)
    return render(request, index.html)


index.html

<body>
<input type="text" id="i1">+<input type="text" id="i2">=<input type="text" id="i3">
<button id="d1">相加</button>

<script>
    $(#d1).click(function () {
        $.ajax({
            url:‘‘,  //url参数可以不写,默认就是当前页面打开的地址
            type:post,
            data:{i1:$(#i1).val(),i2:$(#i2).val()},
            success:function (data) {
                $(#i3).val(data)
            }
        })
    })
</script>

</body>

结果:

技术分享图片


4、ajax传输json格式的数据

前后端传输数据,数据是什么格式就应该说明是什么格式(数据与编码要一一对应)


views.py

import json
def index(request):
    if request.method == POST:
        # json格式的数据存储在了request.body中
        print(request.body)
        data = request.body
        res1 = data.decode(utf-8)
        # 转成字典
        res2 = json.loads(res1)
        print(res2, type(res2))
        return HttpResponse(OK)
    return render(request, index.html)


index.html

<body>
<button id="d1">点击</button>

<script>
    $(#d1).click(function () {
        $.ajax({
            url:‘‘,
            type:post,
            contentType:application/json,   // 说明数据格式
            data:JSON.stringify({name:jason,hobby:study}),
            success:function (data) {
                {#$(‘#i3‘).val(data)#}
                alert(data)
            }
        })
    })
</script>
</body>

结果:

技术分享图片

pycharm中:

技术分享图片


5、ajax传输文件数据

index.html

<body>
<input type="file" name="myfile" id="i1">
<button id="d1">点击传输</button>

<script>
    $(#d1).click(function () {
        // ajax传输文件需要借助于内置对象FormData
        let formdata = new FormData();
        formdata.append(name, jason);
        // 获取input框存放的文件
        formdata.append(myfile, $(#i1)[0].files[0]);
        $.ajax({
            url:‘‘,
            type:post,
            data:formdata,

            // ajax发送文件需要修改两个固定的参数
            // 1.告诉浏览器不要处理我的数据
            processData:false,
            // 2.不要用任何编码,就用我formdata自带的编码格式,Django能够自动识别该formdata对象
            contentType:false,
            // 回调函数
            success:function (data) {
                alert(data)
            }
        })

    });
</script>

</body>


views.py

def index(request):
    if request.method == POST:
        print(request.POST)
        print(request.FILES)
        return HttpResponse(文件收到了)
    return render(request, index.html)

结果:

技术分享图片

技术分享图片


6、form表单与ajax异同点

1.form表单不支持异步提交局部刷新
2.form表单不支持传输json格式数据
3.form表单与ajax默认传输数据的编码格式都是urlencoded


7、MTV和MTV

MTV与MVC
    MTV模型(django):
        M:模型层(models.py)
        T:templates
        V:views

    MVC模型:
        M:模型层(models.py)
        V:视图层(views.py)
        C:控制器(Controller) urls.py

    本质:django的MTV也是MVC

ajax

原文:https://www.cnblogs.com/weiyiming007/p/12377071.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!