我试图使用ajax将数据发布到django视图。我没有错误,只是没有返回数据。 这是我的javascript ajax:
function PostGoal(){
console.log('POSTGOAL!!!')
data_s = {
'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(),
'goal': { 'name':'gg','box':'sasa' }
}
$.ajax({
method: "POST",
url: "http://127.0.0.1:8000/",//"{% url 'home' %}",//"/",//"{% url 'home' %}",
contentType: 'application/json',
//data: JSON.stringify(data_s),
data: {'QQww': "1"},
//dataType: 'json',//expected type of response
success: function (data) {
console.log('aa'+JSON.stringify(data))
},
error: function(xhr,errmsg,err){
console.log('err: '+JSON.stringify(err)+' msg:'+errmsg)
}
});
}
这是我的视图功能:
def analyzer(request):
if request.method == 'POST':
post_data = request.POST
print(post_data)
print (' ajax:',request.is_ajax())
布尔值request.is_ajax()是ajax总是False request.data或request.POST.data不存在且GET相同:request.GET为空。但是我可以在终端的日志中看到:
[22/Mar/2018 22:15:26] "GET /?QQww=1 HTTP/1.1" 200 9746
所以基本上数据是在网址中解析的?提前谢谢。
答案 0 :(得分:0)
我在其他一些帖子中读到'method'是指定调用的正确字段。由于某种原因,参数'method'不起作用,正确的字段是'type':
$.ajaxSetup({
headers: { "X-CSRFToken": '{{csrf_token}}' }
});
$.ajax({
type: "POST",
url: "http://127.0.0.1:8000/",//"{% url 'home' %}",//"/",//"{% url 'home' %}",
contentType: 'application/json',
//data: JSON.stringify(data_s),
data: {'QQww': "1"},
//dataType: 'json',//expected type of response
success: function (data) {
console.log('aa'+JSON.stringify(data))
},
error: function(xhr,errmsg,err){
console.log('err: '+JSON.stringify(err)+' msg:'+errmsg)
}
});
html按钮也需要是'button'类型而不是'submit':
<button type="button" class="btn btn-primary btn-large" id="yesbtn" name="yesbtn" value="yesbtn" onclick="PostGoal();">Yes »</button>
我还添加了csrf令牌的ajax设置来纠正错误:
'Forbidden (CSRF token missing or incorrect.): /'
我希望它有所帮助。