机构列表页面调用ajax失败
来源:7-7 modelform提交我要学习咨询1
余泽锋
2017-10-01
提示错误:
Method Not Allowed (POST): /org/add_ask/
[01/Oct/2017 18:49:56] "POST /org/add_ask/ HTTP/1.1" 405 0
源码
#urls
from django.conf.urls import url, include
from .views import OrgView, AddUserAskView
app_name = 'org'
urlpatterns = [
url(r'^list/$', OrgView.as_view(), name='org_list'),
url(r'^add_ask/$', AddUserAskView.as_view(), name='add_ask'),
]
#views
class AddUserAskView(View):
def POST(self, request):
userask_form = UserAskForm(request.POST)
if userask_form.is_valid():
userask = userask_form.save(commit=True)
return HttpResponse("{'status': 'success'}", content_type='application/json')
else:
return HttpResponse("{'status': 'fail', 'msg': '添加出错'}", content_type='application/json')
#templates
...
<div class="right companyright">
<div class="head">我要学习</div>
<form class="rightform" id="jsStayForm">
<div>
<img src="{% static 'images/rightform1.png' %}"/>
<input type="text" name="name" id="companyName" placeholder="名字" maxlength="25" />
</div>
<div>
<img src="{% static 'images/rightform2.png' %}"/>
<input type="text" name="mobile" id="companyMobile" placeholder="联系电话"/>
</div>
<div>
<img src="{% static 'images/rightform3.png' %}"/>
<input type="text" name="course_name" id="companyAddress" placeholder="课程名" maxlength="50" />
</div>
<p class="error company-tips" id="jsCompanyTips"></p>
<input class="btn" type="button" id="jsStayBtn" value="立即咨询 >" />
{% csrf_token %}
</form>
</div>
<div class="right companyrank layout">
<div class="head">授课机构排名</div>
{% for current_org in hot_orgs %}
<dl class="des">
<dt class="num fl">{{ forloop.counter }}</dt>
<dd>
<a href="/company/{{ current_org.id }}/"><h1>{{ current_org.name }}</h1></a>
<p>{{ current_org.address }}</p>
</dd>
</dl>
{% endfor %}
</div>
</div>
</section>
{% endblock %}
{% block custom_js %}
<script>
$(function(){
$('#jsStayBtn').on('click', function(){
$.ajax({
cache: false,
type: "POST",
url:"{% url "org:add_ask" %}",
data:$('#jsStayForm').serialize(),
async: true,
success: function(data) {
if(data.status == 'success'){
$('#jsStayForm')[0].reset();
alert("提交成功")
}else if(data.status == 'fail'){
$('#jsCompanyTips').html(data.msg)
}
},
});
});
})
</script>
{% endblock %}1回答
-
佐仓千代
2017-10-02
题主我没有遇到你出现的
Method Not Allowed (POST): /org/add_ask/
[01/Oct/2017 18:49:56] "POST /org/add_ask/ HTTP/1.1" 405 0
这个错误
但是我出现了前端没有接收到status和msg的值的错误
因为我开始和你一样json语句是这样写的
return HttpResponse("{'status': 'success'}", content_type='application/json')
return HttpResponse("{'status': 'fail', 'msg': '添加出错'}", content_type='application/json')
老师视频里开始也是这样写的,后来他视频中的代码修改为了下面这样,但是不知道为什么他没有说出来
return HttpResponse('{"status":"success"}', content_type='application/json')
return HttpResponse('{"status":"fail", "msg":"添加出错"}', content_type='application/json')
这里这样写之后就正常了
更改了引号,应该是json格式的问题.
252017-10-04
相似问题