Django Ajax的使用

简介:

ajax = asynchronous javascript and xml(异步的 javascript 和 xml)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

 

Ajax

  很多时候,我们在网页上请求操作时,不需要刷新页面。实现这种功能的技术就要Ajax!

jQuery中的ajax就可以实现不刷新页面就能向后台请求或提交数据的功能,现用它来做django中的ajax,所以先把jquey下载下来,版本越高越好。

一、ajax发送简单数据类型:

html代码:在这里我们仅发送一个简单的字符串

views.py

 1 #coding:utf8 2 from django.shortcuts import render,HttpResponse,render_to_response 3  4 def Ajax(request): 5     if request.method=='POST': 6         print request.POST 7  8         return HttpResponse('执行成功') 9     else:10         return render_to_response('app03/ajax.html')

登录后复制

ajax.html

 1  2  3  4  5 Ajax 6  7  8      9     10 11     12     13      function  DoAjax(){14          var temp = $('#name').val();15          $.ajax({16              url:'app03/ajax/',17              type:'POST',18              data:{data:temp},19              success:function(arg){20                  console.log(arg);21              },22              error:function(){23                  console.log('failed')24              }25          });26      }27     28 

登录后复制

运行,结果:

Django  Ajax的使用

 

二、ajax发送复杂的数据类型:

html代码:在这里仅发送一个列表中包含字典数据类型

由于发送的数据类型为列表 字典的格式,我们提前要把它们转换成字符串形式,否则后台程序接收到的数据格式不是我们想要的类型,所以在ajax传输数据时需要JSON

 

 1  2  3  4  5 Ajax 6  7  8      9     10 11     12     13      function  DoAjax(){14          var temp = $('#name').val();15          $.ajax({16              url:'app03/ajax/',17              type:'POST',18              data:{data:temp},19              success:function(arg){20                  var  obj=jQuery.parseJSON(arg);21                  console.log(obj.status);22                  console.log(obj.msg);23                  console.log(obj.data);24                  $('#name').val(obj.msg);25              },26              error:function(){27                  console.log('failed')28              }29          });30      }31     32 

登录后复制

views.py

 1 #coding:utf8 2 from django.shortcuts import render,HttpResponse,render_to_response 3 import json 4  5 # Create your views here. 6 def Ajax(request): 7     if request.method=='POST': 8         print request.POST 9         data  = {'status':0,'msg':'请求成功','data':['11','22','33']}10         return HttpResponse(json.dumps(data))11         12     else:13         return render_to_response('app03/ajax.html')

登录后复制

打印数据样式:

 

jQuery Ajax 方法列表

 1 jQuery.get(...) 2                 所有参数: 3                      url: 待载入页面的URL地址 4                     data: 待发送 Key/value 参数。 5                  success: 载入成功时回调函数。 6                 dataType: 返回内容格式,xml, json,  script, text, html 7   8   9             jQuery.post(...)10                 所有参数:11                      url: 待载入页面的URL地址12                     data: 待发送 Key/value 参数13                  success: 载入成功时回调函数14                 dataType: 返回内容格式,xml, json,  script, text, html15  16  17             jQuery.getJSON(...)18                 所有参数:19                      url: 待载入页面的URL地址20                     data: 待发送 Key/value 参数。21                  success: 载入成功时回调函数。22  23  24             jQuery.getScript(...)25                 所有参数:26                      url: 待载入页面的URL地址27                     data: 待发送 Key/value 参数。28                  success: 载入成功时回调函数。29  30  31             jQuery.ajax(...)32  33                 部分参数:34  35                         url:请求地址36                        type:请求方式,GET、POST(1.9.0之后用method)37                     headers:请求头38                        data:要发送的数据39                 contentType:即将发送信息至服务器的内容编码类型(默认: "application/x-www-form-urlencoded; charset=UTF-8")40                       async:是否异步41                     timeout:设置请求超时时间(毫秒)42  43                  beforeSend:发送请求前执行的函数(全局)44                    complete:完成之后执行的回调函数(全局)45                     success:成功之后执行的回调函数(全局)46                       error:失败之后执行的回调函数(全局)47                  48  49                     accepts:通过请求头发送给服务器,告诉服务器当前客户端课接受的数据类型50                    dataType:将服务器端返回的数据转换成指定类型51                                    "xml": 将服务器端返回的内容转换成xml格式52                                   "text": 将服务器端返回的内容转换成普通文本格式53                                   "html": 将服务器端返回的内容转换成普通文本格式,在插入DOM中时,如果包含JavaScript标签,则会尝试去执行。54                                 "script": 尝试将返回值当作JavaScript去执行,然后再将服务器端返回的内容转换成普通文本格式55                                   "json": 将服务器端返回的内容转换成相应的JavaScript对象56                                  "jsonp": JSONP 格式57                                           使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数58  59                                   如果不指定,jQuery 将自动根据HTTP包MIME信息返回相应类型(an XML MIME type will yield XML, in 1.4 JSON will yield a JavaScript object, in 1.4 script will execute the script, and anything else will be returned as a string60  61                  converters: 转换器,将服务器端的内容根据指定的dataType转换类型,并传值给success回调函数62                          $.ajax({63                               accepts: {64                                 mycustomtype: 'application/x-some-custom-type'65                               },66                                67                               // Expect a `mycustomtype` back from server68                               dataType: 'mycustomtype'69  70                               // Instructions for how to deserialize a `mycustomtype`71                               converters: {72                                 'text mycustomtype': function(result) {73                                   // Do Stuff74                                   return newresult;75                                 }76                               },77                             });

登录后复制

实现文件上传:

views.py

 1 from django.shortcuts import render,HttpResponse,render_to_response 2 import json,os,uuid 3  4 def Upload(request): 5     if request.method=='POST': 6         id = str(uuid.uuid4()) 7         ret = {'status':True,'data':None,'message':None} 8         obj = request.FILES.get('k3') 9         10         file_path = os.path.join('static',id+obj.name)11         f = open(obj.name,'wb')12         for line in obj.chunks():13             f.write(line)14         f.close()15         ret['data'] = file_path16         return HttpResponse(json.dumps(ret))17     else:18         return render_to_response('appajax/put_file.html')

登录后复制

put_file.html

 1  2  3  4  5 上传文件 6      7     .log{ 8                display: inline-block; 9                 padding:5px 10px;10                 background-color:coral;11                 color: white;12             }13     14 15 16     17     18         19     20     

预览

21
22 23 24 25 function UploadFile(){26 document.getElementById('iframe1').onload = ReloadIfrname();27 document.getElementById('fm1').submit();28 };29 function ReloadIfrname(){30 var content = this.contentWindow.document.body.innerHTML;31 var obj = JSON.parse(content);32 var tag = document.createElement('img');33 tar.src = obj.data;34 $('#preview').empty().append(tag);35 };36 37 38

登录后复制

 

以上就是Django Ajax的使用的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2269674.html

(0)
上一篇 2025年2月27日 11:19:36
下一篇 2025年2月27日 11:19:53

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Django 在Python3.5 下报 没有模块MySQLdb的解决方法

    在整个项目站点下的__init__.py 文件里(即和setting.py在同一个文件下)写入以下代码: import pymysqlpymysql.install_as_MySQLdb() 登录后复制 需要提前安装pymysql模块,相当…

    编程技术 2025年2月27日
    200
  • Django基础教程总结

    对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 一个简单的web程序: #!/usr/bin/env python#coding:utf-8 import socket def ha…

    编程技术 2025年2月27日
    200
  • Django介绍之分页实例

      分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置。 确定分页需求: 1. 每页显示的数据条数2. 每页显示页号链接数3. 上一页和下一页4. 首页和末页 登录后复制 效…

    2025年2月27日
    200
  • 如何创建Django程序

    创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 上述的sitename是自己定义的项目名称! 其他常用命令: python ma…

    编程技术 2025年2月27日
    200
  • XSS及CSRF的详细介绍

    一、XSS 跨站脚本攻击(cross site scripting),为不和层叠样式表(cascading style sheets, css)的缩写混淆,故将跨站脚本攻击缩写为xss。恶意攻击者往web页面里插入恶意script代码,当用…

    2025年2月27日 编程技术
    200
  • Django自定义分页如何实现?

    这篇文章主要为大家详细介绍了django自定义分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置。 确定分页需求:…

    2025年2月27日
    200
  • 总结Python中装饰器的使用介绍

    最近在学习python,下面是在python学习小组上介绍的内容,现学现卖、多练习是好的学习方式,希望大家能够喜欢 Python有大量强大又贴心的特性,如果要列个最受欢迎排行榜,那么装饰器绝对会在其中。 初识装饰器,会感觉到优雅且神奇,想亲…

    编程技术 2025年2月27日
    200
  • Cookie和Session的实例介绍

    一、Cookie cookie,有时也用其复数形式 cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。 1. 应用 服务器可以利用Cookies包含信息的任意性来筛选并经常性…

    2025年2月27日 编程技术
    200
  • Django中间件的详细介绍

     写了几周的脚本,今天终于开始接触web框架了~学习Python的web框架,那么Django就几乎是必修课了,这次的工作是先打打下手,主要的任务是在setting中添加版本号,在渲染静态css,js的路径时附带版本号,例如“example…

    2025年2月27日 编程技术
    200
  • 分享两种方法解决Form表单数据无法动态刷新的方法

    一、无法动态更新数据的实例 1. 如下,数据库中创建了班级表和教师表,两张表的对应关系为“多对多” 1 from django.db import models 2 3 4 class Classes(models.Model): 5 ti…

    2025年2月27日 编程技术
    200

发表回复

登录后才能评论