Django ajax方法提交表单,及后端接受数据
前台代码:
{% 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)
注意点:
- post 方式有避开CSRF检查,具体不回避CSRF检查的方式需要再研究
- 返回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方法提交表单,及后端接受数据的更多相关文章
- jquery中$.ajax方法提交表单
function postdata(){ //提交数据函数 $.ajax({ //调用jqu ...
- Ajax实现提交表单时验证码自动验证(原创自Zjmainstay)
本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> &l ...
- jquery 通过submit()方法 提交表单示例
jquery 通过submit()方法 提交表单示例: 本示例:以用户注册作为例子.使用jquery中的submit()方法实现表单提交. 注:本示例仅提供了对表单的验证,本例只用选用了三个字段作为测 ...
- ASP.NET MVC 网站开发总结(五)——Ajax异步提交表单之检查验证码
首先提出一个问题:在做网站开发的时候,用到了验证码来防止恶意提交表单,那么要如何实现当验证码错误时,只是刷新一下验证码,而其它填写的信息不改变? 先说一下为什么有这个需求:以提交注册信息页面为例,一般 ...
- 使用ajax异步提交表单
虽然这篇文章的标题是提交表单,但是主要的难点在于使用ajax提交文本域的内容, 在工作中的经常会需要ajax跨域的问题,通常的需求使用jsonp就可以得到解决,但是当前项目中有一个图片服务器,客户端需 ...
- jquery ajax异步提交表单数据
使用jquery的ajax方法可以异步提交表单,成功后后台返回json数据,回调函数处理,可以不用刷新页面,达到异步的目的: 处理表单的数据可以用serialize()方法进行序列化,而如果提交的数据 ...
- 关于ajax直接提交表单jQuery .validator验证不起作用问题
之前用$.ajax(function(){});直接提交表单,而表单验证不通过也能提交. $(document).ready(function(){ $.ajax({ url:" ...
- Asp.net Mvc Ajax.BeginForm提交表单
之前Mvc中一直用Html.BeginForm提交表单,即如下: @using (Html.BeginForm("Add", "News", FormMetho ...
- tp5中ajax方式提交表单
用ajax提交表单,迅速,快捷,实现页面无刷新提交表单. <!DOCTYPE html> <html lang="en"> <head> < ...
随机推荐
- Fatal error: Class 'MongoDB\Driver\Manager' not found
折腾了好久,总算找到了问题所在! 首先!!检查你安装的PHP拓展版本是否正确,能在在phpinfo()中看到拓展,若看不到,则安装错误! 其次,我在安装PHP扩展的时候,安装的是mongo拓展,如下图 ...
- 3D数学基础 KeyNote 1
[计算几何复习要点] 1.向量加法的几何含意: a+b的释意为:a的尾连上b的头,新建一条从a的尾指向b的头的向量. 2.向量减法的几何含意: a-b的释意为:尾部相连,新建一个从b的头指向a的头的向 ...
- 使用cloudrea manager管理已有的cdh集群(转)
转自:http://blog.51cto.com/teacheryan/1912116 本文介绍如何搭建cloudera manager去接入已有hadoop组件(cdh). 一.下载必备文件: 1. ...
- 71. Simplify Path (Stack)
Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", ...
- 解决:EXCEL复制粘贴,精度丢失
公司一部分数据是存在elasticsearch里面的,但里面的ID设计得特别长,我是打算把ID号考出来,用jmeter批量 删除的,但复制粘贴到excel里,ID就会精度丢失. 后来找到一个办法,解决 ...
- Struts2源代码查看
-----------------siwuxie095 Struts2 源代码查看 1.Struts2 的核心过滤器 StrutsPrepareAndExecuteFilter 实现了 Filter ...
- android-tip-关于SurfaceView的使用
1. SurfaceView的创建和销毁 当SurfaceView隐藏时,SurfaceView被销毁,此时会调用SurfaceHolder.Callback.surfaceDestroyed ...
- 五分钟带你入门TensorFlow
TensorFlow是Google开源的一款人工智能学习系统.为什么叫这个名字呢?Tensor的意思是张量,代表N维数组:Flow的意思是流,代表基于数据流图的计算.把N维数字从流图的一端流动到另一端 ...
- UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释(转)
layoutSubviews总结 ios layout机制相关方法 - (CGSize)sizeThatFits:(CGSize)size- (void)sizeToFit—————— - (void ...
- Node.js简介(转)
目前,Node.js是在前端页面开发中十分受欢迎的,它是一套用来编写高性能网络服务器的JavaScript工具包,在本文中,将带领各位初学者介绍Node JS的基本知识,要求本文的阅读对象为有一定Ja ...