Django框架——进阶之AJAX
<script>
$("#b1").on("click", function () {
// 点击 id是b1的按钮要做的事儿
var i1 = $("#i1").val();
var i2 = $("#i2").val();
// 往后端发数据
$.ajax({
url: "/ajax_add/",
type: "get",
data: {"i1": i1, "i2": i2},
success: function (arg) {
{#alert(arg);#} //arg 是后端经过各种业务逻辑计算之后返回的数据
// 把返回的结果填充到 id是i3的input框中
$("#i3").val(arg);
}
})
});
</script>
<td>{{ p.birthday|date:'Y-m-d' }}</td> //使用date:'Y-m-d' 可以格式化时间格式
结果如下:

如果不加的话显示如下:

ajax使用在前后端交互的时候要注意的转换事项:
1.
例如:一个html里面的jQuery的ajax如下(看看错误在哪里):
$.ajax({
url: "/test/",
type: "post",
data: {"name": "小黑", "sb":[1,2,3]}, //错误:可以看到此时的data 的sb的value 是一个列表,在这里从前端的jQuery的ajax是转不了这个value到后端的,因为相对于data来说,
//已经是一个多层的数据类型了,这是不行的,所以这里需要通过jQuery的JSON将sb的value转换成为字符串才行!!修改如下:
//方法一:data: {"name": "小黑", "sb":JSON.stringify([1,2,3])}, 只要value不是字符串和数字的,都需要用JSON.stringify()进行序列化转为JSON
//方法二:在data之前添加 traditional: true,的属性也可以实现sb自动JSON化 。但是如果,sb的value是[[1,2,3] , [4,5,6]]双层或多层的话,ajax返回到
//python后端的值还是有问题,应该给是["1,2,3", "4,5,6"]
success: function (data) {
alert(data);
}
})
2.
后端的view.py文件写如下(找出错误在哪里):
def test(request):
if request.method == "POST":
name = request.POST.get("name")
sb = request.POST.getlist("sb")
print(name)
print(sb, type(sb)) ret = { //错误:可以看到这里的返回值是ret,而ret的多层格式的一个字典类型,如果经过下面的HttpResponse返回不了这个数据段到前端的ajax的,因为,在网络传输中是不能这样传输的,
"status": 0, //所以需要,在这里进行JSON格式的转换,如下:
"data": [
{"name": "张三", "age": 18},
{"name": "李四", "age": 28},
]
}
return HttpResponse(ret) return render(request, "test.html")
-----------------------------------------------------------------------------------------------------------------------
ret = {
"status": 0,
"data": [
{"name": "张三", "age": 18},
{"name": "李四", "age": 28},
]
}
ret_str = json.dumps(ret) //在python后端,将多层的数据类型序列化为JSON格式,之后再进行传输,这还没有完,因为,在前端还需要对从这里转出去JSON进行反序列化,如下:
return HttpResponse(ret_str)
-----------------------------------------------------------------------------------------------------------------
看看:在前端中,就需要添加dataType:"json"类型或者使用JSON.parse()反序列化
$("#b1").on("click", function () {
$.ajax({
url: "/test/",
type: "post",
dataType: "json", //方法一:这个表示将从后端传来的JSON数据默认反序列化解析
traditional: true,
data: {"name": "小黑", "sb":[1,2,3,4]},
success: function (data) {
// 把后端返回的数据反序列化成JS中的对象
// var data = JSON.parse(data); //方法二:这个表示直接将后端返回的数据直接解析
if (data.status === 0){
// 这次请求成功
alert(data.data);
}else {
// 请求出错
alert(data.error);
}
}
})
});
Django框架——进阶之AJAX的更多相关文章
- Django框架 之 基于Ajax中csrf跨站请求伪造
Django框架 之 基于Ajax中csrf跨站请求伪造 ajax中csrf跨站请求伪造 方式一 1 2 3 $.ajaxSetup({ data: {csrfmiddlewaretoken: ...
- django框架进阶-中间件-长期维护
################## 为什么使用中间件? ####################### 先说几个需求, 1,url的白名单,url=[ "XX"] ...
- django框架进阶-AJAX-长期维护
################## 预备知识---json ####################### 预备知识,json 什么是json?这是一种数据格式,和语言没有关系, 为什么 ...
- Django框架详细介绍---AJAX
一.概述 1.什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * ...
- django框架进阶-解决跨域问题
####################################### """ 一.为什么会有跨域问题? 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不 ...
- Django框架进阶
Django ORM那些相关操作 Django中ORM介绍和字段及字段参数 Cookie.Session和自定义分页 Django 中间件 AJAX Django form表单 Django的认证系统 ...
- django框架进阶-CSRF认证
############################################### """ django中csrf的实现机制 #第一步:django第一次响应 ...
- django框架进阶-分页-长期维护
################## 分页 ####################### 分页, django有自己内置的分页,但是功能不是很强大,所以自己写一个分页, web页面数据非常 ...
- django框架进阶-auth认证系统-长期维护
################## django的认证系统 ####################### 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要 ...
随机推荐
- Hibernate系列1:入门程序
1.传统的java数据库连接 在传统的开发中,如果要建立java程序和数据库的连接,通常采用JDBC或者Apache Commons DbUtils开发包来完成.他们分别有以下特点: JDBC: 优点 ...
- js携带参数跳转controller返回页面
upauth:function(){ var record = myForm.getRecord(); var companywyId = record.get("companyId&quo ...
- nvl(sum(字段),0) 的时候,能展示数据0,但是group by 下某个伪列的时候,查不到数据(转载)
今天碰到一个比较有疑惑的问题,就是在统计和的时候,我们往往有时候查不到数据,都会再加个 nvl(sum(字段),0) 来显示这个字段,但是如果我们再加个group by ,就算有加入这个 nvl(nu ...
- PMML辅助机器学习算法上线
在机器学习用于产品的时候,我们经常会遇到跨平台的问题.比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环 ...
- openerp学习笔记 单据自动编号(编码规则)
说明: 单据自动编码允许定义 单据前缀+按当前年.月.日.时.分.秒+流水号+单据后缀 单据自动编号允许按所有公司统一编号或按分公司单独编号 单据自动编号中的流水号部分未按月重新编号,不断累计,当超出 ...
- 数据库开源框架之GreenDAO
主页: https://github.com/greenrobot/greenDAO 配置: 添加以下依赖 * compile 'de.greenrobot:greendao:2.1.0' * com ...
- NAT(地址转换技术)详解
目录 NAT产生背景ip地址基础知识NAT技术的工作原理和特点静态NAT动态NATNAT重载(经常应用到实际中)NAT技术的优缺点优点缺点NAT穿越技术应用层网关(ALG)ALG的实际应用NAT技术的 ...
- 1-2、kubernetes架构概述和kubernetes基础概念
kubernetes https://draveness.me/understanding-kubernetes http://kubernetes.kansea.com/docs/ master/n ...
- JSP 自定义标签的开发流程
1.编写一个实现Tag接口的标签处理器类 package cn.itcast.web.tag; import java.io.IOException; import javax.servlet.htt ...
- C基础知识(10):预处理器
C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤.简言之,C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理. 所有的预处理器命令都是以井号(#)开 ...