前台代码:

 {% block content %}
<div class="wrapper wrapper-content">
<div class="blog-content">
{% for blog in blog %}
<form id="formid" >
{% csrf_token %}
<div class="edit-title">
<b>标题</b>
<br>
<input name="id-blog" id="blog-id" type="hidden" value={{blog.id}}>
<input name="title" type="text" id="blog-title" value={{blog.title}}>
</div>
<div class="edit-content">
<b>正文</b>
<textarea name="body" id="blog-body">{{blog.body}}</textarea>
</div>
<div>
<!--<input type="submit" value="取消">-->
<button type="button" id="submit" >保存</button>
</div>
</form>
{% endfor %}
</div>

js代码:

 <!--ajax提交表单-->
<script type="text/javascript"> $(function(){
$('#submit').on('click', function(){
var id = $("#blog-id").val()
var title = $("#blog-title").val()
<!--var body = $("#blog-body").val()-->body是tinymce富文本编辑器,不能这样获取
var body= tinyMCE.getInstanceById('blog-body').getBody().innerHTML;//谷歌中可以获取到body,火狐获取不到 $.ajax({
cache: false,
type: "POST",
url:"/sub_article/",
data:{'title': title, 'body': body,'blogId':id},
dataType:"json",
async: true,
beforeSend:function(xhr, settings){
xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
},
<!--回调函数success的data和上面的传如参数data不是一个-->
success: function(data) {
if(data.status == 'success'){
console.log(data)
alert("提交成功");
<!--window.location.reload();-->
}else {
alert("fail");
}
},
});
});
})
</script>

views:

 def sub_article(request):
# if request.is_ajax:
if request.method == 'POST':
# 获取ajax传过来的参数值
data = request.POST
id = data.get('blogId')
print 'id:%s' % id
title = data.get('title')
body = data.get('body')
# body = request.POST.get("blog-body")#此种方式不能获取到值
print "title:%s" % title
print "body:%s" % body
BlogPost.objects.filter(id=int(id)).update(title=title)
BlogPost.objects.filter(id=int(id)).update(body=body) # 更改数据
# BlogPost.objects.create(title=title)
# BlogPost.objects.create(body=body)#提交时插入两条半截数据很可能是这里分开执行引起的,需要通过id来准确定位修改哪条数据
return HttpResponse('{"status":"success"}', content_type='application/json')
else:
return HttpResponse('{"status":"fail", "msg":"fail hhahh"}', content_type='application/json')

接收参数

1.GET 方式 

$.ajax({ 
url:'/hello/getTest', 
type:'GET', 
data:{'a':3333,'b':444}, 
success:function(data){ 
alert(data.message); 

}) 

views->参数解析和用数据字典的方式返回json 数据(跨域名请求数据,则使用 jsonp字符串)

```
def getTest(request):
data = request.GET
print(data)
a = data.get('a')
b = data.get('b')
response_data = {}
response_data['result'] = 's'
response_data['message'] = a+b
return HttpResponse(json.dumps(response_data), content_type="application/json")
```
     function postTest() {
$.ajax({
url:'/hello/postTest',
type:'POST',
data:{'a':3333,'b':444},
success:function(data){
alert(data.message);
}
})
}

views-> 引入from django.views.decorators.csrf import csrf_exempt,并且增加注解@csrf_exempt,目的是避开CSRF检查

    @csrf_exempt
def postTest(request):
data = request.POST
print(data)
a = data.get('a')
b = data.get('b')
response_data = {}
response_data['result'] = 's'
response_data['message'] = a+b
return JsonResponse(response_data)

注意点:

  1. post 方式有避开CSRF检查,具体不回避CSRF检查的方式需要再研究
  2. 返回Json的方式有两种
<!--ajax提交表单-->
<script type="text/javascript"> $(function(){
$('#submit').on('click', function(){
var id = $("#blog-id").val()
var title = $("#blog-title").val()
<!--var body = $("#blog-body").val()-->body是tinymce富文本编辑器,不能这样获取
var body= tinyMCE.getInstanceById('blog-body').getBody().innerHTML;//谷歌中可以获取到 $.ajax({
cache: false,
type: "POST",
url:"/sub_article/",
data:{'title': title, 'body': body,'blogId':id},
dataType:"json",
async: true,
beforeSend:function(xhr, settings){
xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
},
<!--回调函数success的data和上面的传如参数data不是一个-->
success: function(data) {
if(data.status == 'success'){
console.log(data)
alert("提交成功");
<!--window.location.reload();-->
}else {
alert("fail");
}
},
});
});
})
</script>

Django ajax方法提交表单,及后端接受数据的更多相关文章

  1. jquery中$.ajax方法提交表单

    function postdata(){                        //提交数据函数 $.ajax({                                //调用jqu ...

  2. Ajax实现提交表单时验证码自动验证(原创自Zjmainstay)

    本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> &l ...

  3. jquery 通过submit()方法 提交表单示例

    jquery 通过submit()方法 提交表单示例: 本示例:以用户注册作为例子.使用jquery中的submit()方法实现表单提交. 注:本示例仅提供了对表单的验证,本例只用选用了三个字段作为测 ...

  4. ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码

    首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般 ...

  5. 使用ajax异步提交表单

    虽然这篇文章的标题是提交表单,但是主要的难点在于使用ajax提交文本域的内容, 在工作中的经常会需要ajax跨域的问题,通常的需求使用jsonp就可以得到解决,但是当前项目中有一个图片服务器,客户端需 ...

  6. jquery ajax异步提交表单数据

    使用jquery的ajax方法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不用刷新页面,达到异步的目的: 处理表单的数据可以用serialize()方法进行序列化,而如果提交的数据 ...

  7. 关于ajax直接提交表单jQuery .validator验证不起作用问题

    之前用$.ajax(function(){});直接提交表单,而表单验证不通过也能提交. $(document).ready(function(){ $.ajax({       url:" ...

  8. Asp.net Mvc Ajax.BeginForm提交表单

    之前Mvc中一直用Html.BeginForm提交表单,即如下: @using (Html.BeginForm("Add", "News", FormMetho ...

  9. tp5中ajax方式提交表单

    用ajax提交表单,迅速,快捷,实现页面无刷新提交表单. <!DOCTYPE html> <html lang="en"> <head> < ...

随机推荐

  1. 使用JAVA爬取京东商品价格

    有一件物品,你想看看它在京东下所有搜索结果的价格,要怎么办呢? 京东这个网站还是很好爬的,所有价格信息都写在了Html里面,而且跳到第二页之后,url也是有规律的,基本没有什么技术难度. 例如:想找i ...

  2. 重写iframe内联框架中的内容

    重写iframe内联框架中的内容,不使用src指向页面url,主动写入HTML代码: var ifr = document.getElementById("CMBC-certificatio ...

  3. HTTP请求类

    package com.paytest.util; import java.io.BufferedReader; import java.io.IOException; import java.io. ...

  4. python中heapq堆的讲解

    堆的定义: 堆是一种特殊的数据结构,它的通常的表示是它的根结点的值最大或者是最小. python中heapq的使用 列出一些常见的用法: heap = []#建立一个常见的堆 heappush(hea ...

  5. MaperReduce实验

    目录 MaperReduce实现WordCount程序二次排序 前期准备 1. 工程结构 2. 编写自定义NewKey类 3. 编写WCMapper类 4. 编写WCReduer类 5. 编写作业描述 ...

  6. 封装basedao及动态创建新类型的java数组

    package com.huawei.base; import java.io.Serializable;import java.lang.reflect.Array;import java.lang ...

  7. web前端整套面试题(三)--网易的面试题

    题型分析: 一.选择题部分(30分) 元素出栈可能性 排序方法的优缺点 HTTP请求方法 关系型数据库种类 多线程(进程与线程共享) 计算机网络协议 linux指令 JQuery实现方法 二.编程题( ...

  8. 基于mapper插件编写的可定制代码生成基本框架(springboot)

    先看一下,基本结构图: 特征,提供 最佳实践的项目结构.配置文件.精简的POM 统一响应结果封装 统一异常处理 统一接口登录认证 常用基础方法抽象封装 Controller.service.dao层基 ...

  9. Bash CookBook(一)--基础

    Bash 是brian Fox在1988年1月10号出于Richard Stallman的建议而写的.   一. 运行模板: 交互登陆的shell,登陆后bash会读取和执行/etc/profile. ...

  10. SQL 数据库 学习 006 如何设置一个用户名和密码

    我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 先启动 SQL Server 2014 Management Studi ...