zoukankan      html  css  js  c++  java
  • Django 返回数据 到ajax

    Djnago中,HttpResponse 和JsonResponse,返回后直接取值

    1.返回字符串

    正常使用HttpResponse返回字符串就好

    2.视图函数响应JSON数据类型:

    • 使用HttpResponse响应手动序列化后JSON数据直接响应,前端得到的响应数据需要被动反序列化成对应的数据类型
    • 使用HttpResponse响应手动序列化后JSON数据并设置参数content_type='application/json'前端得到的响应数据是经过JSON对象自动进行反序列化后的对应数据类型
    • 使用HttpResponse响应不需要手动序列化JSON数据,直接响应即可,但是对于非字典类型的数据类型需要设置参数safe=False前端得到的响应数据是经过JSON对象自动进行反序列化后的对应数据类型 

    ①使用HttpResponse响应:未告知类型,前端需要被动解析

    视图函数:

    data={'status':[1,2,3],'info':'login'}

    return HttpResponse(json.dumps(data))#直接发送json字典,前端需要被动反序列化

    AJAX回调函数:

    success: function (response) {//请求回调函数参数response被动反序列化

        console.log(JSON.parse(response));

        console.log(typeof JSON.parse(response));

    ②使用HttpResponse响应,告知类型,前段自动调用JSON对象解析

    视图函数:

    data={'status':[1,2,3],'info':'login'}

    return HttpResponse(json.dumps(data),content_type='application/json')#发送json字典,告知类型

    return HttpResponse(json.dumps(ret,ensure_ascii=False)) #ensure_ascii=False是告诉json不要对中文进行编码,不然返回给前端的数据中如果有中文的话会被编码成unicode类型的数据,导致前端看不到中文

    AJAX回调函数:

    success: function (response) {//请求回调函数参数response自动反序列化

        console.log(response);

        console.log(typeof response); 

    使用JsonResponse响应,不需要手动进行序列化,同时也不需要告知类型,在响应除字典以外的数据类型时,需要添加参数safe=False

    from  django.http  import  JsonResponse

    响应字典视图函数:

    data={'status':[1,2,3],'info':'login'}

    return JsonResponse(data)#使用JsonResponse,直接响应数据

    响应非字典视图函数:

    data=[{'status':[1,2,3],'info':'login'}]

    return JsonResponse(data,safe=False)#使用JsonResponse,直接相应数据,字典以外数据类型徐设置参数safe=False

    AJAX回调函数:

    success: function (response) {//请求回调函数参数response自动反序列化

        console.log(response);

        console.log(typeof response);

    • 添加到短语集
       
      • 没有此单词集:加利西亚语 → 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
    • 添加到短语集
       
      • 没有此单词集:英语 → 中文(简体)...
         
      • 创建新的单词集...
    • 拷贝
  • 相关阅读:
    Java中的List转换成JSON报错(一)
    关于侦听的注册
    TCMalloc小记
    ocp|ocm考证系列文章
    开源HTML5 APP开发神器CanTK发布
    实例级别的回滚
    MySQL查询所有数据库表出错
    java.lang.ArrayIndexOutOfBoundsException
    如何修改64位Eclipse中的代码字体大小
    gpt 分区容量错误
  • 原文地址:https://www.cnblogs.com/jueshilaozhongyi/p/14106993.html
Copyright © 2011-2022 走看看