【发布时间】:2012-07-31 22:07:37
【问题描述】:
所以我一直在关注本教程http://webcloud.se/log/AJAX-in-Django-with-jQuery/,get 方法工作正常。即我得到一个弹出窗口,说明它应该在弹出窗口中说什么。但是,当我使用 post 方法时,我什么也得不到。看来这个请求甚至没有到达我的视野。
这就是我处理这个问题的 javascript 的样子:
$(document).ready(function(){
$("#popupbutton").click(function(){
$.post("/launch_instances", {
name: "Monty",
food: "Spam"
},
function(data) {
alert(data);
}
);
});
...................
这是我模板的相关部分:
<center>
<div id="popupbutton"><input type="submit" value="Launch Instances!" /></div>
</center>
这是我的views.py:
from django.http import HttpResponse
def li_view(request):
return HttpResponse("post gets to the view")
if request.is_ajax():
if request.method == 'GET':
message = "This is an XHR GET request"
elif request.method == 'POST':
message = "This is an XHR POST request"
else:
message = "Nothing"
else:
message = "No XHR"
return HttpResponse(message)
正如您所看到的,当我进入视图时,我做的第一件事是返回一个 HttpResponse,但是当我使用 post 时,我看不到任何弹出窗口,就像我使用 get 时所做的那样。所以我的猜测是,由于某种原因,请求甚至没有到达视图。
这是我的 urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^launch_instances/', 'simdata.views.li_view'),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
)
周围也有类似的问题,但没有比这更离奇的了。我是 django/ajax/jquery 的新手,所以可能遗漏了一些非常小的东西。
提前致谢:)
【问题讨论】:
-
您的
urls.py中有什么内容?可能有bug? -
@CypressFrankenfeld 我已经添加了我的 urls.py :)
-
如果您使用的是现代浏览器,例如最近的 Chrome 或 Firefox(带有 Firebug),您应该能够使用开发人员工具来确定您的请求发生了什么。例如,在 Chrome 中,您应该在触发 AJAX 调用之前打开开发者控制台(Wrench->Tools->Developer Tools)并转到 Network 选项卡。然后你可以看到状态码和响应内容,这应该可以帮助你调试。
-
在您的 jquery 帖子中,尝试使用“/launch_instances/”而不是“/launch_instances”。
-
@MichaelC.O'Connor 感谢您提供的出色工具。我的状态文本显示“500 内部服务器错误”,但我没有任何名为响应内容的列