ajax的json格式数据

什么是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))

 

相关文章