博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax的json格式数据
阅读量:4537 次
发布时间:2019-06-08

本文共 3024 字,大约阅读时间需要 10 分钟。

什么是Ajax:

         通过js语言跟后台进行交互的一个东西

                   -特点:异步,局部刷新

                  

                   ajax往后台提交数据

                   $.ajax({

                            url:'请求的地址',

                            type:'get/post',

                            data:{key:value,key2:value2},

                            success:function(data){

                                     alert(data)

                            }

                   })

                           

        

         1 后台返回json格式

         2 问?返回render,返回redirect?

        

         基于ajax写一个登陆功能,一旦登陆成功,跳转到百度,登陆失败,在页面显示用户名或密码错误

        

         总结:

                   1 后端如果返回JsonResponse,前端的ajax内部会自动将json格式字符串转换成字典

                   2 后端如果返回HttpResponse,前端的ajax内部不会给你自动转换,拿到的data是字符串类型,需要手动JSON.parse(data)来转成字典

        

                   3 字符串转字典:JSON.parse(data)

                     字典转字符串:aa=JSON.stringify(字典对象)

                   4 如果前端传的格式是json格式,django不会处理body中的内容,需要自己处理

                     只有前端传的格式是urlencoded,form-data格式,django才会给我处理

前段:  $('.btn').click(function () {         data1={name:$('.name').val(),pwd:$('.pwd').val()};        $.ajax({            url:'/login/',            type:'post',            contentType:'application/json',            data:JSON.stringify(data1),            {#data:data1,#}            success:function (data) {                $('.p1').text(data.msg)            }        })    })

 

后台: def login(request):#     if request.method == 'GET':#         return render(request, 'login.html')      if request.method == 'POST':#         print(request.POST)#         print(request.body)#         data = request.body.decode('utf-8')#         data = json.loads(data)#         print(type(data))#         # name=data.get('name')#         # pwd=data.get('pwd')#         name = data['name']#         pwd = data['pwd']#         user = models.User.objects.filter(name=name, #            pwd=pwd).first()##         if user:#             dic = {
'msg': '登陆成功'}# return JsonResponse(dic)# else:# dic = {
'msg': '登录失败'}# return JsonResponse(dic)

 

 

前段: $('#submit').click(function () {    $.ajax({        url:'/login/',        type:'post',        data:{name1:$("#name").val(),pwd2:$("#pwd").val()},        success:function (data) {            //后台用JsonResponse返回数据            //data 就会被转成字典            console.log(data)            console.log(typeof data)            //JSON.parse(data) 把字符串类型转成字典            data=JSON.parse(data)            {#JSON.stringify()#}            console.log(typeof dat1)            if(data.status == 100){                //成功,跳转到指定页面                //location.href=地址,前端就会跳转到指定的url                alert(data.msg)                //$("#error").text(data.msg+'正在跳转')                //location.href=data.url            }else{                $("#error").text(data.msg)            }        }    })})

 

 

def login(request):    dic={
'status':100,'msg':None} if request.method == 'GET': return render(request, 'login.html') # if request.is_ajax(): if request.method=='POST': name=request.POST.get('name1') pwd=request.POST.get('pwd2') if name=='lqz' and pwd=='123': dic['msg'] = '登陆成功' # 想让前端跳转 # dic['url']='http://www.baidu.com' dic['url']='/test/' else: # 返回json格式字符串 dic['status']=101 dic['msg']='用户名或密码错误' # return JsonResponse(dic) return HttpResponse(json.dumps(dic))

 

转载于:https://www.cnblogs.com/zhouhai007/p/10285175.html

你可能感兴趣的文章
处理并解决mysql8.0 caching-sha2-password问题
查看>>
JavaScript 之 对象/JSON/数组
查看>>
判断delegate是否释放
查看>>
实验八
查看>>
时间日期函数
查看>>
java多线程的实现方法
查看>>
2016年终总结与来年计划
查看>>
10.9做的一个静态页面(巩固前面的内容)
查看>>
幸运男孩--点的hash
查看>>
大数的减法------神秘数
查看>>
洛谷P1658 购物
查看>>
Using Perl in Oracle 11gR2 Database
查看>>
Rabel 1.3.9 发布,让论坛回归交流本质
查看>>
Mac 安装brew和安装composer
查看>>
不用系统函数将字符串转换成整型【Java算法】
查看>>
Nginx限速遇到的问题
查看>>
判断当前主机是不是阿里云内网
查看>>
Java疯狂讲义(二)
查看>>
简简单单安装debian桌面工作环境
查看>>
ORACLE 11g EXPDP 的停止、启动和监控
查看>>