50.1、ajax介绍:

1、ajax是在不跳转当前url地址的情况偷偷的往后台发送数据做增删改数据的操作,如果成功返回结果刷新当前页面,失败则提醒,

使用 id 或 name 属性。

2、模态对话框中的数据已经随页面的加载而加载。模态对话框(对话框添加,删除,修改)适合使用ajax向后台传送数据,form表单

提交数据是url跳转的方式,使用name属性。

3、ajax data 的 value 值只支持字符串、数字、数组,不支持字典,前端传过来的数据都可看作字符串。

4、ajax语法格式:

(1)前提:ajax的使用需要下载并引入jQuery。

(2)格式:

$.ajax({

url: '/add_classes.html/',

// 后台地址

type: 'POST',

// 发送数据的方式 post、get

data: {'username':'root','password': '123'},

// 向后台发送的key-value的数据形式,value支持字符串、数字、数组、不支持字典。

success:function(arg){

// 回调函数,arg是服务端返回的数据,返回的是字符串。

window.location.reload();

// 刷新界面

},

error:function(){

# 由于网络错误或url地址错误而触发的回调函数。

}

});

50.2、ajax 其它应用方式:

1、Python序列化:

(1)字符串 = json.dumps(对象):

对象 -> 字符串

(2)对象 = json.loads(字符串):

字符串 -> 对象

2、JavaScript:

(1)字符串 = JSON.stringify(对象):

对象 -> 字符串

(2)对象 = JSON.parse(字符串):

字符串 -> 对象

(3)应用场景(数据传输时):

发送:字符串

接收:字符串 -> 对象

(4)用法:

1)发送数据时 data 中的 value 只是字符串或数字:

$.ajax({

url: 'http//www.baidu.com',

type: 'GET',

data: {'k1':'v1'},

success:function(arg){

// arg是字符串类型

// var obj = JSON.parse(arg)

// 将arg转化为对象

}

});

2)发送数据时 data 中的 value 是数组(traditional:true,):

$.ajax({

url: 'http//www.baidu.com',

type: 'GET',

data: {'k1':[1,2,3,4]},

traditional:true,

success:function(arg){

// arg是字符串类型

// var obj = JSON.parse(arg)

// 将arg转化为对象

}

});

3)发送数据时 data 中的 value 是字典:

$.ajax({

url: 'http//www.baidu.com',

type: 'GET',

data: {'k1': JSON.stringify({})},

success:function(arg){

// arg是字符串类型

// var obj = JSON.parse(arg)

// 将arg转化为对象

}

});

4)dataType: 'JSON',:

$.ajax({

url: 'http//www.baidu.com',

type: 'GET',

data: {'k1':'v1'},

dataType: 'JSON',

// 将arg直接转为对象

success:function(arg){

// arg是对象

}

});

3、事件委托:

$('要绑定标签的上级标签').on('click','要绑定的标签',function(){})

$('要绑定标签的上级标签').delegate('要绑定的标签','click',function(){})

50.3、小结:

1、使用新 URL 方式和对话框方式的区别:

(1)新 URL 方式:

1)独立的页面

2)数据量大或条目多

(2)对话框方式:

1)数据量小或条目少

2)增加,编辑

3)Ajax:考虑,当前页,td 中自定义属性

4)删除:对话框

2、示例:

(1)前端(.html):

<script src="/static/js/jquery-3.1.1.js"></script>

<script src="/static/plugins/bootstrap/js/bootstrap.js"></script>

<script>

/*

javascript功能集合

*/

$(function () {

bindDel();

bindDelConfirm();

});

/*

绑定删除按钮点击事件

*/

function bindDel() {

$('#tb').on('click','.del-row',function () {

$('#delModal').modal('show');

// 回去当前行的ID

var rowId = $(this).parent().parent().attr('nid');

$('#delNid').val(rowId);

});

}

/*

绑定删除提交事件

*/

function bindDelConfirm() {

$('#delConfirm').click(function () {

var rowId = $('#delNid').val();

console.log(rowId);

$.ajax({

url: '/del_student/',

type: 'GET',

data: {'nid': rowId},

success:function (arg) {

var dict = JSON.parse(arg);

if(dict.status){

$('tr[nid="'+ rowId+'"]').remove();

}

$('#delModal').modal('hide');

}

});

});

}

</script>

(2)后端(views.py):

from django.shortcuts import render

from django.shortcuts import HttpResponse

from app01 import models

import json

def del_student(request):

ret = {'status': True}

try:

nid = request.GET.get('nid')

models.Student.objects.filter(id=nid).delete()

except Exception as e:

ret['status'] = False

return HttpResponse(json.dumps(ret))

50.4、补充:

1、radio:是checked="checked";ajax:$('#eidtModal :radio[value="1"]').prop('checked',true);。

2、selected:是selected="selected";ajax:var values = $('#sel').val();。

3、zip:

4、JavaScript 字符串和对象之间的转换:

5、http响应:

6、FBV和SBV:

(1)

(2)

(3)

7、遍历表单:

var data = $('#fmForm表单的ID').serialize();

$.ajax({

data: $('#fm').serialize()

})

50、django工程(ajax)的更多相关文章

  1. Django工程读取mongodb并使用分页器

    pycharm开发django工程(二) 项目需求: 1. 从mongodb中读取数据,并显示到网页中 2. 在网页显示的每一页加入分页符 首先使用pycharm的企业版新建一个django的虚拟工程 ...

  2. Django工程的建立以及小网站的编写

    这篇博文会详细的介绍如何创建django工程,介绍我如何做了第一个网站.本文基于windows7安装了python2.7.12,Django1.8.18(LTS)版.采用的IDE为pycharm.建议 ...

  3. Django使用AJAX调用自己写的API接口

    Django使用AJAX调用自己写的API接口 *** 具体代码和数据已上传到github https://github.com/PythonerKK/eleme-api-by-django-rest ...

  4. python Django之Ajax

    python Django之Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步 ...

  5. django 接受 ajax 传来的数组对象

    django 接受 ajax 传来的数组对象 发送:ajax 通过 POST 方式传来一个数组 接收:django 接受方式 array = request.POST.getlist(‘key[]’) ...

  6. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  7. Django工程搭建

    -----环境安装 1.创建虚拟环境 mkvirtualenv django_py3_1.11 -p python3   2.安装django pip install django==1.11.11 ...

  8. python web框架 django 工程 创建 目录介绍

    # 创建Django工程django-admin startproject [工程名称] 默认创建django 项目都会自带这些东西 django setting 配置文件 django可以配置缓存 ...

  9. django学习笔记【001】django版本的确定&创建一个django工程

    2.3 查看当前的django版本 python3. -m django --version 2.3.1 创建一个django工程 django-admin startproject mysite 在 ...

随机推荐

  1. [刷题] 70 Climbing Stairs

    要求 楼梯共有n个台阶,每次上一个台阶或两个台阶,一共有多少种上楼梯的方法? 示例 输入:n=3 [1,1,1],[1,2,],[2,1] 输出:n=3 实现 自顶向下(递归) 递归 1 class ...

  2. 华为鲲鹏处理器实现商用,Arm服务器又添砝码

    华为鲲鹏处理器实现商用,Arm服务器又添砝码 鲲鹏920就是华为海思1620 鲲鹏920面向 服务器CPU就是 华为海思162064core 武汉华为PC不是海思1620是另一个cpu 深圳华为PC的 ...

  3. 列出 Ubuntu 和 Debian 上已安装的软件包

    列出 Ubuntu 和 Debian 上已安装的软件包 如果你经常用 apt 命令,你可能觉得会有个命令像 apt 一样可以列出已安装的软件包.不算全错. apt-get 命令 没有类似列出已安装软件 ...

  4. Linux内存带宽的一些测试笔记

    Linux内存带宽的一些测试笔记 首页 所有文章 2014年10月 GNU/Linux系统  2014-10-21 13:20  GNU/LINUX系统 内存带宽 1k 字  669 次 最近要测一下 ...

  5. 2.5if语句

    判断(if)语句 目标 开发中的应用场景 if 语句体验 if 语句进阶 综合应用 01. 开发中的应用场景 生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?-- 程序 ...

  6. FD_SET -(转自 kakaxia6337的专栏)

    FD_ZERO,FD_ISSET这些都是套节字结合操作宏 看看MSDN上的select函数, 这是在select   io   模型中的核心,用来管理套节字IO的,避免出现无辜锁定. int   se ...

  7. python 获取时间范围内日期列表

    python 获取时间范围内日期列表 import datetime def dateRange(beginDate, endDate): dates = [] dt = datetime.datet ...

  8. Python+Selenium - 定位策略

    一个元素定位可能会在多个地方用到,用loc变量接收元素的定位方式和相对路径.使用时再拆包(*loc) loc = (定位方式,'定位方式对应的元素路径')    =>元素定位方式及路径 driv ...

  9. grasshopper之python电池执行逻辑

    在grasshopper中,需要导入的包虽然不多,但是相当绕人,所要实现的操作往往找不到,暂时做个分类. 双击输入 python 电池: # 导入rhino 包 import Rhino #Rhino ...

  10. 使用ubuntu charmed kubernetes 部署一套生产环境的集群

    官方文档: https://ubuntu.com/kubernetes/docs 搭建一个基本的集群 集群ip规划 hostname ip ubuntu-1 10.0.0.10 juju-contro ...