Django之前后端交互使用ajax的方式
1. 在项目中前后端数据相互是一种常态, 前后端交互使用的是ajax请求和form表单的请求两种方式"
ajax与form表单的区别在于: form 是整个页面刷新提交的, 但是ajax 是局部提交 局部验证的, 这个是他们的唯一区别
2. 前端ajax请求方式:
$.ajax({
url: '/ajax/', # 请求路径
type: 'post', # 请求方式
data: { # get和post都以data字典方式携带数据
usr: $('.usr').val(), # 获取输入框内容
pwd: $('.pwd').val(),
},
success: function (data) {
console.log(typeof(data), data); # 得到后台返回的数据(普通字符串 | json类型数据)
}
})
ajax发送的请求方式
3. 后端接受ajax请求的相应方式:
from django.http import JsonResponse
# 返回json类型数据的终极方法
dic = {'status': 'ok', 'msg': '登录成功'}
return JsonResponse(dic, safe=False, json_dumps_params={'ensure_ascii': False}) # *****
# 参数含义:
# 返回值保证是字典类型
# safe在False情况下就支持返回列表或字符串
# 取消json的dumps方法采用的默认ascii编码中文
后端代码使用JsonResponse
def ajax(request): print(request.is_ajax()) if request.method == 'GET':
usr = request.GET.get('usr', None)
pwd = request.GET.get('pwd', None)
print('get>>>', usr, pwd)
msg = request.GET.get('msg', None)
print('get>>>', msg)
if request.method == 'POST':
usr = request.POST.get('usr', None)
pwd = request.POST.get('pwd', None)
print('post>>>', usr, pwd)
msg = request.GET.get('msg', None)
print('post>>>', msg)
# ajax请求,后台只需要返回信息,所以不会出现render、redirect # 1、返回字符串类型数据
# return HttpResponse('OK') # 2、返回json类型数据
# dic = {'status': 'ok', 'msg': '登录成功'}
# data = json.dumps(dic, ensure_ascii=False)
# 直接返回json模块处理后的json数据(json字符串),前台接收到的是一个json类型的字符串
# return HttpResponse(data)
# 返回json字符串是,还告诉前台,该数据就是json类型字符串
# return HttpResponse(data, content_type='application/json') # 3、直接通过JsonResponse返回json数据
dic = {'status': 'ok', 'msg': '登录成功'}
# 返回值保证是字典类型
# safe在False情况下就支持返回列表或字符串
# 取消json的dumps方法采用的默认ascii编码中文
return JsonResponse(dic, safe=False, json_dumps_params={'ensure_ascii': False})
后端得到ajax请求的案例
前端
<body> {# form表单提交数据:form提交数据后,一定会发生页面的跳转 #}
{# ajax提交数据:只向后台请求数据,请求的过程是异步的,请求成功后有一个回调函数,携带后台返回的数据 #}
<form action="/form/" method="post"> <input class="usr" type="text" name="usr">
<input class="pwd" type="password" name="pwd">
<input class="ajax-submit" type="button" value="登录">
<input class="ajax-submit_bac" type="button" value="了解"> </form> </body>
form表单的简单发送请求
<script>
$('.ajax-submit').click(function () {
{#window.alert(123)#}
{#window.document.getElementById()#}
{#window.location.href = 'https://www.baidu.com'#} $.ajax({
{#注:url中可以拼接请求数据,get|post方式在后台都通过GET对象获取该数据#}
url: '/ajax/?msg=qwer',
type: 'post',
data: {
usr: $('.usr').val(),
pwd: $('.pwd')[0].value,
},
{#ajax发生get|post请求,用data携带数据#}
success: function (data) {
{#返回值为普通字符串#}
{#console.log(">>>>", data);#}
{#alert(data);#}
{#window.location.href = data#} {#返回值为json类型数据#}
console.log(typeof(data), data);
{#前台如何处理json类型字符串#}
{#data = JSON.parse(data);#}
{#console.log(typeof(data), data, data.msg);#}
},
error: function (e) { }
})
}) $('.ajax-submit_bac').click(function () {
{#jsonStr = '{"name": "Bob"}';#}
dic = {
name: 'HOU'
};
jsonStr = JSON.stringify(dic); $.ajax({
url: '/ajax-bac/',
type: 'post',
{# dataType: 'json', 了解:告诉jq,一定按json类型数据解析(默认后台返回的一定是json类型数据, 如果不是就拿不到结果) #}
{# 前台主动传入json类型的字符串, 后台需要手动处理body(前台json数据类型还不能错) #}
contentType: 'application/json',
data: jsonStr,
success: function (data) {
console.log(typeof(data), data);
},
error: function (e) {
console.log(e)
}
})
})
</script>
ajax发送请求的案例
Django之前后端交互使用ajax的方式的更多相关文章
- 一、Django前后端交互之Ajax和跨域问题
一.Ajax介绍 1.概述 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Jav ...
- ajax学习----json,前后端交互,ajax
json <script> var obj = {"name": "xiaopo","age": 18,"gender ...
- Vue-CLI项目-axios模块前后端交互(类似ajax提交)
08.31自我总结 Vue-CLI项目-axios前后端交互 一.模块的安装 npm install axios --save #--save可以不用写 二.配置main.js import axio ...
- Django 前后端数据传输、ajax、分页器
返回ORM目录 Django ORM 内容目录: 一.MTV与MVC模式 二.多对多表三种创建方式 三.前后端传输数据 四.Ajax 五.批量插入数据 六.自定义分页器 一.MTV与MVC模式 M ...
- Django前后端交互&数据验证
一.前端--->后端 1.form表单 <form method="post" action="/test/?a=1&b=2"> {% ...
- 前端ajax的各种与后端交互的姿势
前端中常常用的与后端交换数据的话,通常是要用到ajax这种方法的 但是交互的方式有很多种,很多取决于你后端的属性,我这儿主要列举我目前项目比较常用的两种方式 --一个是我们通用的web api和控制器 ...
- Vue之前后端交互
Vue之前后端交互 一.前后端交互模式 接口调用方式 原生ajax 基于jQuery的ajax fetch axios 异步 JavaScript的执行环境是「单线程」 所谓单线程,是指JS引擎中负责 ...
- Django之META与前后端交互
Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...
- ajax与python后端交互
目录 ajax简介 前后端传输数据编码格式 ajax发送json格式数据 ajax携带文件数据 回调机制处理策略 ajax简介 ajax可以在页面不刷新的情况下可以与后端进行数据交互,异步提交,局部刷 ...
随机推荐
- [Go back to REDIS]
Overview 内存中的数据结构存储系统,可以用作数据库.缓存和消息中间件. redis底层数据结构:跳跃表 [为什么选skiplist而不是red-black tree] 支持多种数据结构:Str ...
- linux中ls -l介绍
[root@localhost ~]# ls -l 总计 152 -rw-r--r-- 1 root root 2915 08-03 06:16 a -rw------- 1 root root 10 ...
- idea取消参数名称(形参名)提示
idea取消参数名称(形参名)提示 IDEA会自动显示形式参数的变量名称,这在一开始使用时感觉很方便,友好.有时候也会显得排版很乱,下面是取消自动显示形式参数名称的方式 取消前是这个样子. “File ...
- 5.Fiddler模拟弱网限速方法
原理:Fiddler的模拟限速是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果. 算法:那么我们的算法就是 1000/下 ...
- git教程: 查看文件状态与修改内容
转载:时光机穿梭 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed ...
- Jacobi-Anger expansion
[转载请注明出处]http://www.cnblogs.com/mashiqi 2017/06/16 适合于自己的关于Jacobi-Anger expansion的推导方法,这里记下来,方便以后查阅. ...
- 词频统计V2.5
一.前言 作业具体要求见[https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/922].一开始用JAVA写了个词频统计,然而没想出输入格式 ...
- 《DSP using MATLAB》Problem 7.13
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- java 中异常处理示例并捕获完整异常内容
public class Test { public static void main(String[] args) { try { int a = 1; int b = 0; int c = a/b ...
- py-day2-4 python 集合
# 集合是由 { ,} 组成 test = {1,2,8,9,7,5} print(test) {1, 2, 5, 7, 8, 9} # 集合的结果是 去重的,且排序是 无序的 test = {1,2 ...