したがって、私はこのチュートリアル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が初めてなので、おそらく非常に小さなものが欠けています。
前もって感謝します :)