Django+JQuery+Ajax+Post方案中的问题及解决
2014-07-16 08:49
711 查看
遇到的问题
请求发送后,服务端无响应Django对于POST请求会检查请求来源,表单方式提交时:
在Form内添加
`{% csrf_token %}` 标签;
request响应函数前,添加
`@csrf_exempt` ;
Jquery POST 方式提交时,在服务端添加了 @csrf_exempt ,在Django1.5版本后,无法直接通过POST获取参数,通过
`raw_data = request.body` 获取数据时,出现如下错误提示:
Exception: You cannot access body after reading from request's data stream
其实这个提示的意思是在获取body数据前,数据流已经被读过;问题就出在 @csrf_exempt 上,Django提前对request做了读取验证操作,因此问题就来了:Django服务端要接收POST请求,需要支持csrf_exempt,但添加这个前置后,又无法获取POST参数了。
解决办法:不使用服务端的@csrf_exempt前置说明,前端添加csrftoken,让服务端可以接收到POST请求。
$.ajaxSetup({
dataType: "json", beforeSend: function(xhr, settings){ var csrftoken = $.cookie('csrftoken'); xhr.setRequestHeader("X-CSRFToken", csrftoken); },});
为Ajax添加预处理,保证每次POST请求时,自动发送csrftoken,这样就可以在服务端正常处理POST数据了。
生命在于折腾~~
相关文章推荐
- jQuery Ajax Post 回调函数不执行问题的解决方法
- jquery 跨域POST信息问题解决方案
- Django Ajax跨域问题解决方案
- 利用jquery实现Ajax技术,post方式传值中文乱码问题的解决办法。
- jQuery Ajax Post 回调函数不执行问题的解决方法
- struts2_Ajax_post_解决了中文乱码问题
- JSP中,AJAX使用POST方式提交中文乱码问题解决
- jQuery中ajax的使用和缓存问题解决
- 使用ASP.NET AJAX 和JQuery一起解决翻页选择的问题
- jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
- jquery中ajax方法提交数据时,中文乱码问题解决。
- 基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
- XMLHttpRequest的POST中文表单问题解决方案
- 页面编码为GBK时 jquery 提交ajax数据完美解决"中文乱码"方案
- 前端使用Jquery的getJSON方法,后台使用PHP,解决IE和火狐Firefox中存在的跨域ajax请求问题。
- jquery $.ajax()取xml数据的小问题解决方法
- TOMCAT中处理POST、GET编码问题解决方案
- Ajax跨域问题解决方案
- jquery向.ashx文件post中文乱码问题的解决
- 使用JQUERY解决AJAX的跨域问题