一.ajax
  1 什么是ajax:异步的JavaScript和xml,跟后台交互,都用json
  2 ajax干啥用的?前后端做数据交互:
  3 之前学的跟后台做交互的方式:
   -第一种:在浏览器窗口输入地址(get)
   -第二种:用form表单提交数据
  4 特点:
   -异步(异步和同步的区别:同步是请求发过去,要等着回应;异步:不需要等回应,可以进行其他操作)
   -局部刷新(*****):
  5 $.ajax({
            url:'/index/',
            type:'post',
            //data:往后台提交的数据
            data:{'name':'lqz','age':18},
            //成功的时候回调这个函数
            success:function (data) {
                alert(data)
            }
        })
  6 上传文件
   模板层:
   <form action="" method="post" enctype="multipart/form-data">
   $("#btn").click(function () {
    //上传文件,必须用FormData,生产一个formdata对象
    var formdata=new FormData();
 
 //添加 text input 的数据
    formdata.append('name',$("#name").val());
    //取出文件$("#myfile")[0].files拿到的是文件列表,取第0个把具体的文件取出来
    formdata.append('myfile',$("#myfile")[0].files[0]);
 
    $.ajax({
     url:'/files_ajax/',
     type:'post',
     //不预处理数据,(name=lqz&age=18)
     processData:false,
     //指定往后台传数据的编码格式(urlencoded,formdata,json)
     //现在用formdata对象处理了,就不需要指定编码格式了,不要给我编码了
     contentType:false,
     data:formdata,
     success:function (data) {
      alert(data)
     }
    })
   视图层:(跟form表单上传文件完全一样)
   def files_ajax(request):
    # 提交文件从,request.FILES中取,提交的数据,从request.POST中取
    name=request.POST.get('name')
    print(name)
    myfile = request.FILES.get('myfile')
    with open(myfile.name, 'wb') as f:
     for line in myfile:
      f.write(line)
    return HttpResponse('ok')
   
  7 基于ajax提交json格式数据
   -模板层:
   <form action="" method="post" enctype="multipart/form-data"> 后台body 取到 b'name=1&age=2 
 <form> url上显示数据 后台body取到 b'字典
  
    $('#btn').click(function () {
    var post_data={'name':$("#name").val(),'pwd':$("#pwd").val()};
    console.log(typeof post_data);
    // 如何把post_data这个字典,转成json格式字符串
    //JSON.stringify相当于python中json.dumpus(post_data)
    //pos是个字符串,json格式字符串
    var pos=JSON.stringify(post_data);
    console.log(typeof pos);
    $.ajax({
     url:'/json/',
     type:'post',
     data:pos,
     //后台返回的字符json数据格式自动转换成obj
     //dataType:'json',
     //指定数据格式类型
     contentType:'application/json',
     success:function (data) {
      //如果data是json格式字符串,如何转成对象(字典)?
      //data=JSON.parse(data)
      console.log(typeof data)
      console.log(data)
      var ret=JSON.parse(data)
      console.log(typeof ret)
      console.log(ret.status)
      //alert(data)
     }
    })
   })
   -视图层:
    def add_json(request):
     if request.method=='GET':
      return render(request,'json.html')
     print(request.POST)
     print(request.GET)
     print(request.body)
     import json
     # res是个字典
     res=json.loads(request.body.decode('utf-8'))
     print(res)
     print(type(res))
     dic={'status':'100','msg':'登录成功'}
     # 返回给前台json格式  (2种方式)
     return HttpResponse(json.dumps(dic)) #里面的为str字典 返回给前台str字典,前台指定datatype;'json',自动变成字典对象
     # return JsonResponse(dic) #dic为字典 返回给前台字典对象
      
   -重点:*****
    - 请求的编码方式:
     contentType:'application/json',
    -响应回来解析的方式
     dataType:'json',

随机推荐

  1. SQL语句实例集合

    SQL语句实例 表操作     例 1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE  TABLE  STUDENTS (SNO      NUMERIC (6, ...

  2. `&nbsp;` `&emsp;` `&ensp;` `&thinsp;`

    字符实体 说明   这是我们使用最多的空格,也就是按下space键产生的空格.在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个).要使用html实体表示才可累加.   占据的宽度正好 ...

  3. Openresty 学习笔记(四)lualocks包管理器安装使用

    Luarocks是一个Lua包管理器,基于Lua语言开发,提供一个命令行的方式来管理Lua包依赖.安装第三方Lua包等,社区比较流行的包管理器之一,另还有一个LuaDist,Luarocks的包数量比 ...

  4. Spark源码剖析 - SparkContext的初始化(十)_Spark环境更新

    12. Spark环境更新 在SparkContext的初始化过程中,可能对其环境造成影响,所以需要更新环境,代码如下: SparkContext初始化过程中,如果设置了spark.jars属性,sp ...

  5. Hadoop — Yarn原理解析

    1. 概述 Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台:而MapReduce等运算程序则相当运行于操作系统之上的应用程序. 2. YARN的重要概念 ...

  6. JAVA线程池ScheduledExecutorService周期性地执行任务 与单个Thread周期性执行任务的异常处理

    本文记录: 1,使用ScheduledExecutorService的 scheduleAtFixedRate 方法执行周期性任务的过程,讨论了在任务周期执行过程中出现了异常,会导致周期任务失败. 2 ...

  7. oracle 导入execl

    如果没有配置好的,就需要添加一个 如果找不到相应的驱动就安装AccessDatabaseEngine.exe

  8. Maven 那点事儿(转)

    0. 前言 Jason Van Zyl,在 Java 十大风云人物排行榜上或许会看到他. 这兄弟是干嘛的? 他就是 Maven 的创始人,人们都尊称他为“Maven 他爸”. 毋庸置疑,Jason 也 ...

  9. mysql查询反斜杠字符串问题

    马上上线发现一个问题,太坑了 写一个查询语句,明明数据库中有,但是就是查不到,后来发现是反斜杠的问题 比如 数据库中有一个字段名称为 name  存储的值为 “海尔厨电\洗碗机” 当我使用如下sql查 ...

  10. Django 详解 信号Signal

    Django信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. Model signals pre_init # ...