码迷,mamicode.com
首页 > Web开发 > 详细

Django与Ajax

时间:2018-09-12 19:58:07      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:hide   submit   ext   header   cti   完成   计算   and   files   

1,什么是Ajax

AJAXAsynchronous Javascript And XML)翻译成中文就是异步JavascriptXML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)。

  • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
  • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)

优点:

  • AJAX使用Javascript技术向服务器发送异步请求
  • AJAX无须刷新整个页面

2,基于jquery的Ajax的实现

<button class="send_Ajax">send_Ajax</button>
<script>

       $(".send_Ajax").click(function(){

           $.ajax({
               url:"/handle_Ajax/",
               type:"POST",
               data:{username:"Yuan",password:123},
               success:function(data){
                   console.log(data)
               },
               
               error: function (jqXHR, textStatus, err) {
                        console.log(arguments);
                    },

               complete: function (jqXHR, textStatus) {
                        console.log(textStatus);
                },

               statusCode: {
                    403: function (jqXHR, textStatus, err) {
                          console.log(arguments);
                     },

                    400: function (jqXHR, textStatus, err) {
                        console.log(arguments);
                    }
                }

           })

       })

</script>

3,案例

一 通过Ajax,实现前端输入两个数字,服务器做加法,返回到前端页面

技术分享图片
def test_ajax(requests):
    n1=int(requests.POST.get(n1))
    n2=int(requests.POST.get(n2))
    return HttpResponse(n1+n2)
视图函数
技术分享图片
def test_ajax(requests):
    n1=int(requests.POST.get(n1))
    n2=int(requests.POST.get(n2))
    return HttpResponse(n1+n2)
js代码
技术分享图片
<input type="text" id="num1">+<input type="text" id="num2">=<input type="text" id="sum">
<button id="submit">计算</button>
html代码

 二 基于Ajax进行登录验证

用户在表单输入用户名与密码,通过Ajax提交给服务器,服务器验证后返回响应信息,客户端通过响应信息确定是否登录成功,成功,则跳转到首页,否则,在页面上显示相应的错误信息

技术分享图片
def auth(request):
    back_dic={user:None,message:None}
    name=request.POST.get(user)
    password=request.POST.get(password)
    print(name)
    print(password)
    user=models.user.objects.filter(name=name,password=password).first()
    print(user)
    # print(user.query)
    if user:
        back_dic[user]=user.name
        back_dic[message]=成功
    else:
        back_dic[message]=用户名或密码错误
    import json
    return HttpResponse(json.dumps(back_dic))

视图函数
视图函数
技术分享图片
$("#submit3").click(function () {
            $.ajax({
                url: /auth/,
                type: post,
                data: {
                    user: $("#id_name").val(),
                    password: $(#id_password).val()
                },

                success: function (data) {
                    {#console.log(data)#}
                    var data=JSON.parse(data)
                    if (data.user){
                        location.href=https://www.baidu.com
                    }else {
                        $(".error").html(data.message).css({color:red,margin-left:20px})
                    }
                }


            })
        }
    )

Js代码
js代码

4,基于Ajax上传文件

浏览器请求头为:

Content-Type:

 multipart/form-data; boundary=----WebKitFormBoundaryA5O53SvUXJaF11O2

$("#ajax_button").click(function () {
        var formdata=new FormData()
        formdata.append(name,$("#id_name2").val())
        formdata.append(avatar,$("#avatar2")[0].files[0])
        $.ajax({
            url:‘‘,
            type:post,
            processData:false, //告诉jQuery不要去处理发送的数据
            contentType:false,// 告诉jQuery不要去设置Content-Type请求头
            data:formdata,
            success:function (data) {
                console.log(data)

            }

        })
    })

 

Django与Ajax

标签:hide   submit   ext   header   cti   完成   计算   and   files   

原文地址:https://www.cnblogs.com/zk952557666/p/9636312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!