在Django中,如何使用jQuery获取POST数据而无需表单。

3

我目前可以使用jQuery的post方法向指向myurl的视图发送请求。

 jQuery.post("/myurl", {'value1':value1, 'value2':value2,
                        'csrftoken': '{{ csrf_token }}'}, 
             function(data) {
                        alert("Data Loaded: " + data);
                            });

然而,我不知道如何在视图中获取已发布的数据,而不使用表单:

 def save_user_graph(request):
      if request.method == 'POST': 
            return HttpResponse(request.POST.get('value1'),status=201)

返回 None


这应该按照你所描述的方式工作。是哪个返回了None?是你的HTTP响应还是request.POST.get('value1')?你传递了什么值?尝试使用pdb查找你正在接收哪些值。 - Bjorn
那段代码很难读懂,但思路是正确的。你尝试过将其分解,并添加一些日志,以便查看value1的值吗? - Daniel Roseman
我在jquery post之前放置了一个alert(value1);,它具有正确的值。这不是http响应返回None的原因,因为我尝试了其他被正确传递的变量。 - Mermoz
2
叹气。如果你在处理某些代码时遇到问题,把它分解,然后记录每个部分。因此,记录request.method。然后记录request.POST.get('value1')的值。然后,记录HttpResponse。 - Daniel Roseman
1个回答

4
如果save_user_graph返回None,则请求方法不是POST。如果save_user_graph返回带有单词“None”的HttpResponse,则value1未被正确发送。您能否澄清哪种情况?
如果您使用chrome,请尝试打开开发工具栏并导航到该页面。您可以转到“控制台”选项卡并查看AJAX请求,以查看发送的数据是否正确。
同样,如果您使用Firefox和Firebug,则可以转到页面并观察ajax请求并检查post参数。
假设javascript有效,您将想要在save_user_graph中记录request.POST。如果需要,您只需print request.POST,并且假设您正在使用django dev服务器,则输出将在dev服务器输出中打印。
我们需要更多的调试信息,然后才能给出更好的答案。 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接