一 什么是Ajax

AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)。

  • 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;
  • 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。

AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程)

场景:

aaarticlea/png;base64,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" alt="" width="473" height="317" />

优点:

  • AJAX使用Javascript技术向服务器发送异步请求
  • AJAX无须刷新整个页面

二 基于jquery的Ajax实现

<button class="send_Ajax">send_Ajax</button>
<script> $(".send_Ajax").click(function(){ $.ajax({
url:"/handle_Ajax/",
type:"POST",
data:{username:"Yuan",password:123},
success:function(data){
console.log(data)
},
      
error: function (jqXHR, textStatus, err) {
console.log(arguments);
}, complete: function (jqXHR, textStatus) {
console.log(textStatus);
}, statusCode: {
'403': function (jqXHR, textStatus, err) {
console.log(arguments);
}, '400': function (jqXHR, textStatus, err) {
console.log(arguments);
}
} }) }) </script>

Ajax---->服务器------>Ajax执行流程图

三 案例

一 通过Ajax,实现前端输入两个数字,服务器做加法,返回到前端页面

def test_ajax(requests):
n1=int(requests.POST.get('n1'))
n2=int(requests.POST.get('n2'))
return HttpResponse(n1+n2)
    $("#submit").click(function () {
$.ajax({
url: '/test_ajax/',
type: 'post',
data: {
n1: $("#num1").val(),
n2: $("#num2").val()
},
success: function (data) {
console.log(data)
$("#sum").val(data)
}, })
})
<input type="text" id="num1">+<input type="text" id="num2">=<input type="text" id="sum">
<button id="submit">计算</button>

二 基于Ajax进行登录验证

用户在表单输入用户名与密码,通过Ajax提交给服务器,服务器验证后返回响应信息,客户端通过响应信息确定是否登录成功,成功,则跳转到首页,否则,在页面上显示相应的错误信息

views

def auth(request):
back_dic={'user':None,'message':None}
name=request.POST.get('user')
password=request.POST.get('password')
print(name)
print(password)
user=models.user.objects.filter(name=name,password=password).first()
print(user)
# print(user.query)
if user:
back_dic['user']=user.name
back_dic['message']='成功'
else:
back_dic['message']='用户名或密码错误'
import json
return HttpResponse(json.dumps(back_dic))

JS代码

    $("#submit3").click(function () {
$.ajax({
url: '/auth/',
type: 'post',
data: {
'user': $("#id_name").val(),
'password': $('#id_password').val()
}, success: function (data) {
{#console.log(data)#}
var data=JSON.parse(data)
if (data.user){
location.href='https://www.baidu.com'
}else {
$(".error").html(data.message).css({'color':'red','margin-left':'20px'})
}
} })
}
)

四 文件上传

请求头ContentType

1 application/x-www-form-urlencoded

这应该是最常见的 POST 提交数据的方式了。浏览器的原生 <form> 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样(无关的请求头在本文中都省略掉了):

POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8 user=lqz&age=22

2 multipart/form-data

这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 <form> 表单的 enctype 等于 multipart/form-data。直接来看一个请求示例:

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA ------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="user" yuan
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

这个例子稍微复杂点。首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 multipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。关于 multipart/form-data 的详细定义,请前往 rfc1867 查看。

这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。

上面提到的这两种 POST 数据的方式,都是浏览器原生支持的,而且现阶段标准中原生 <form> 表单也只支持这两种方式(通过 <form> 元素的 enctype 属性指定,默认为 application/x-www-form-urlencoded。其实 enctype 还支持 text/plain,不过用得非常少)。

随着越来越多的 Web 站点,尤其是 WebApp,全部使用 Ajax 进行数据交互之后,我们完全可以定义新的数据提交方式,给开发带来更多便利。

3 application/json

application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。

JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。记得我几年前做一个项目时,需要提交的数据层次非常深,我就是把数据 JSON 序列化之后来提交的。不过当时我是把 JSON 字符串作为 val,仍然放在键值对里,以 x-www-form-urlencoded 方式提交。

基于Form表单上传文件

<form action="/file_put/" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="name">
头像:<input type="file" name="avatar" id="avatar1">
<input type="submit" value="提交">
</form>

必须指定 enctype="multipart/form-data"

视图函数:

 
def file_put(request):
if request.method=='GET':
return render(request,'file_put.html')
else:
# print(request.POST)
# print(request.POST)
print(request.body) # 原始的请求体数据
print(request.GET) # GET请求数据
print(request.POST) # POST请求数据
print(request.FILES) # 上传的文件数据
# print(request.body.decode('utf-8'))
print(request.body.decode('utf-8')) print(request.FILES)
file_obj=request.FILES.get('avatar')
print(type(file_obj))
with open(file_obj.name,'wb') as f:
for line in file_obj:
f.write(line)
return HttpResponse('ok')

基于Ajax上传文件

 
    $("#ajax_button").click(function () {
var formdata=new FormData()
formdata.append('name',$("#id_name2").val())
formdata.append('avatar',$("#avatar2")[0].files[0])
$.ajax({
url:'',
type:'post',
processData:false, //告诉jQuery不要去处理发送的数据
contentType:false,// 告诉jQuery不要去设置Content-Type请求头
data:formdata,
success:function (data) {
console.log(data) } })
})

浏览器请求头为:

Content-Type:
multipart/form-data; boundary=----WebKitFormBoundaryA5O53SvUXJaF11O2
 

五 Ajax提交json格式数据

    $("#ajax_test").click(function () {
var dic={'name':'lqz','age':18}
$.ajax({
url:'',
type:'post',
contentType:'application/json', //一定要指定格式 contentType: 'application/json;charset=utf-8',
data:JSON.stringify(dic), //转换成json字符串格式
success:function (data) {
console.log(data)
} }) })

提交到服务器的数据都在 request.body 里,取出来自行处理

六 Django内置的serializers(把对象序列化成json字符串)

from django.core import serializers
from django.core import serializers
def test(request):
book_list = Book.objects.all()
ret = serializers.serialize("json", book_list)
return HttpResponse(ret)

Django--Ajax 提交的更多相关文章

  1. django ajax提交form表单数据

    后台: from django.shortcuts import render from django.shortcuts import redirect from django.shortcuts ...

  2. Django Ajax提交数据请求

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. Django ajax提交 登录

    一.url from django.contrib import adminfrom django.urls import pathfrom appo1 import views urlpattern ...

  4. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

  5. Django之如何预防csrf功能的方式 form提交与ajax提交

    1. 什么是csrf认证: 主要是防止别人恶意登录你的账户信息用的: 2. csrf认证在django的实现方式: 分为两种, 一种是from表单提交的方式,另一种是ajax提交实现方式 前端: &l ...

  6. Django中Ajax提交数据的CSRF问题

    错误信息: Forbidden (CSRF token missing or incorrect.): 什么是CSRF: django为用户实现防止跨站请求伪造的功能,通过中间件 django.mid ...

  7. Django ajax方法提交表单,及后端接受数据

    前台代码: {% block content %} <div class="wrapper wrapper-content"> <div class=" ...

  8. Django之Ajax提交

    Ajax 提交数据,页面不刷新 Ajax要引入jQuery Django之Ajax提交 Js实现页面的跳转: location.href = "/url/" $ajax({ url ...

  9. ajax提交文件,django测试脚本环境书写,froms组件,钩子函数

    1.在新版本中,添加app是直接在settings设置中,将INSTALLED_APPS里添加app名字, 但是他的完整写法是   'app01.apps.App01Config'  因为新版本做了优 ...

  10. Django ajax MYSQL Highcharts<1>

    Another small project with django/Ajax/Mysql/Highcharts. 看下效果图  - delivery dashboard .嘿嘿 是不是还蛮好看的. 废 ...

随机推荐

  1. Linux之 Ngnix

    前言: WEB框架 django 大而全, 功能特别多 form表单 , ORM, 中间件 笨重,臃肿 600/s flask 轻量级的,小而精, 它使用的都是第三方模块进行拼接起来的 4988/s ...

  2. Linux系统minicom命令详解

    minicom 功能说明:调制解调器通信程序 语 法:minicom [-8lmMostz][-a<on或0ff>][-c<on或off>][-C<取文件>][-d ...

  3. Linux驱动之定时器在按键去抖中的应用

    机械按键在按下的过程中会出现抖动的情况,如下图,这样就会导致本来按下一次按键的过程会出现多次中断,导致判断出错.在按键驱动程序中我们可以这么做: 在按键驱动程序中我们可以这么做来取消按键抖动的影响:当 ...

  4. 15. pk-mext

    在平时的生产环境中,我们经常会碰到监控MySQL的各个状态值的一个变化趋势,然后就会自己写个脚本,将status快照保存到文本中.当我们去分析的时候,需要自己去比较差值,是一件比较麻烦的时候,虽然可以 ...

  5. 数据库-mysql语句-查-WEB服务器

    (1)MySQL中的查询 (2)WEB服务器 Order:  订单.排序 Set:设置.集合 Table:表.桌子 1.MySQL中的简单查询 —— 查询结果的排序 示例:查询出所有员工信息,要求按工 ...

  6. MVC 移动识别

    ASP.NET MVC移动端识别 上面我们已经说了 响应式布局,但那是客户端的,针对于同一个视图页面的.不过 同一个视图页面 通过响应式布局 也是有缺点的 会导致页面 样式十分庞大 页面加载效率降低, ...

  7. c++WIN32获取syslistview行数

    #include "stdafx.h" #include <windows.h> #include <commctrl.h> #include <io ...

  8. Papers | 图像/视频增强 + 深度学习

    目录 I. ARCNN 1. Motivation 2. Contribution 3. Artifacts Reduction Convolutional Neural Networks (ARCN ...

  9. 单片机之PID算法

    说到PID算法,想必大部人并不陌生,PID算法在很多方面都有重要应用,比如电机的速度控制,恒温槽的温度控制,四轴飞行器的平衡控制等等,作为闭环控制系统中的一种重要算法,其优点和可实现性都成为人们的首选 ...

  10. hdu 1069 Monkey and Banana 【动态规划】

    题目 题意:研究人员要测试猴子的IQ,将香蕉挂到一定高度,给猴子一些不同大小的箱子,箱子数量不限,让猩猩通过叠长方体来够到香蕉. 现在给你N种长方体, 要求:位于上面的长方体的长和宽  要小于  下面 ...