帮助请发送ajax-request。
HTML:
<p><a id="test">Hello</a></p>
JS:
$(function() {
$("#test").click(function() {
$.ajax({
url: "/xhr_test/",
type: 'POST',
dataType:"html",
data: {
"phone": 1,
"skype": 2,
"other": 3,
},
error: function() {
alert('Ошибка получения запроса');
},
success: function(data) {
alert('ajax worked' + data);
}
});
});
});
urls.py:
url(r'^xhr_test/$', 'views.xhr_test', name='xhr_test'),
views.py:
def xhr_test(request):
if request.is_ajax():
message = "Hello AJAX!"
else:
message = "Hello"
return HttpResponse(message)
我尝试在使用js发送邮件之前检查数据:
问题是,在提交表单后,我收到了消息&#34; error mes&#34;。同时向浏览器控制台输出:POST http:// localhost:8000 / xhr_test / 403(FORBIDDEN)
请帮助修复代码
答案 0 :(得分:1)
您还需要在请求中发送CSRF
令牌。
从您的视图中将csrf令牌传递给将生成您的网页的模板,然后通过csrf
调用将ajax
令牌传回,以便django将您识别为有效连接。
<强>的Javascript 强>
$(function() {
$("#test").click(function() {
$.ajax({
url: "/xhr_test",
type: 'POST',
dataType:"json",
data: {
"phone": 1,
"skype": 2,
"other": 3,
"csrfmiddlewaretoken": '{{ csrf_token }}'
},
error: function() {
alert('Ошибка получения запроса');
},
success: function(data) {
alert('ajax worked' + data);
}
});
});
});
HTML模板
{% csrf_token %}
<p><a id="test">Hello</a></p>
<强> views.py 强>
def xhr_test(request):
if request.is_ajax():
phone = request.POST['phone']
data_to_send = {}
data_to_send.update({'data':phone})
return HttpResponse(simplejson.dumps(data_to_send),content_type="application/json")
答案 1 :(得分:0)
您需要在您的ajax电话中加入csrfmiddlewaretoken
。
$(function() {
$("#test").click(function() {
$.ajax({
url: "/xhr_test/",
type: 'POST',
dataType: "html",
data: {
csrfmiddlewaretoken: "{{csrf_token}}",
phone: 1,
skype: 2,
other: 3,
},
error: function() {
alert('Ошибка получения запроса');
},
success: function(data) {
alert('ajax worked' + data);
}
});
});
});