为了账号安全,请及时绑定邮箱和手机立即绑定

django无法收到ajax的请求数据

django无法收到ajax的请求数据

慕尼黑8549860 2019-02-18 15:43:36
问题描述 本想做一个表单验证来熟悉一下ajax的功能,但是跟着教程敲一样的代码,自己的django却没法接收到页面ajax发送的数据,接收到的全是none,一步步调试过,也发现不了问题,后来自己另起一个app写了一个表单验证,django却能收到ajax的数据并返回data,不知道原先的代码出什么问题了,csrf也注释掉了,还是收不到ajax的数据。 问题出现的环境背景及自己尝试过哪些方法 已经试过加上{% csrf_token %} 了,没用,注释掉了setting.py里的csrf拦截了。另外,把自己的代码和教程做了比对,是一样的,但是教程用的是django1.8,自己用的是2.0,不知道是不是版本问题?把自己的代码替换到教程里面的源码里也不行 相关代码 // 请把代码文本粘贴到下方(请勿用图片代替代码)views文件:def ajax(request): ret = {'status':True,'error':None,'data':None} try: h = request.POST.get('hostname') i = request.POST.get('IP') p = request.POST.get('port') c = request.POST.get('agent') print(type(h)) if h and len(h) > 5: models.Host.objects.create(hostname = h,ip = i, port = p,b_id = c) else: ret['status'] = False ret['error'] = '太短了' except Exception as e: ret['status'] = False ret['error'] = '请求错误' return HttpResponse(json.dumps(ret)) urls.py文件: from django.contrib import adminfrom django.urls import path,re_pathfrom app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('host/',views.host), re_path('business/',views.business), path('ajax/',views.ajax),] html代码:(<body>部分)<form id="add_form" action="/host/" method="POST"> {% csrf_token %} 主机名:<input type="text" name="hostname" id="h1"><span id="error_msg"></span><br> IP:<input type="text" name="IP" id="i1"><br> 端口:<input type="text" name="port" id="p1"><br> <select name="agent" id="s1">业务线 {% for i in v2 %} <option value="{{i.b_id}}">{{i.b__caption}}</option> {% endfor %} </select> <input type="submit" value="提交" > <input type="button" value="取消" > <a id="a1">ajax提交</a> </form> <script src="/static/jquery-3.3.1.js"></script> <script> $(function(){ $('#a1').click(function(){ $.ajax({ url:"/ajax/", type:'PSOT', data:$('#add_form').serialize(), success:function(data){ var obj = JSON.parse(data); if(obj.status){ location.reload() }else{ $('#error_msg').text(obj.error) } } }) }) }) </script> 你期待的结果是什么?实际看到的错误信息又是什么? 需要整个django文件测试的,希望留下邮箱,请各位大神帮个忙了!
查看完整描述

4 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

POST写错了??

<script>
    $(function(){
        $('#a1').click(function(){
            $.ajax({
                url:"/ajax/",
                type:'PSOT',     ←这里
                data:$('#add_form').serialize(),
                success:function(data){
                var obj = JSON.parse(data);
                if(obj.status){
                    location.reload()
                }else{
                    $('#error_msg').text(obj.error)
                }
                }
            })
        })
    })
</script>
查看完整回答
反对 回复 2019-03-01
?
万千封印

TA贡献1891条经验 获得超3个赞

@csrf_exempt
在你view方法中加个这个,取消验证

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 1109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信