単一の ajax 呼び出しを作成しようとしています。ajax呼び出しはサーバーに送信されますが、送信しているデータはビューのリクエストオブジェクトでは利用できません. 印刷するrequest.post
と、 が得られ<QueryDict: {}>
ます。サーバーにデータが送信されていません。クロムのリクエストペイロードでデータを表示できるため、ブラウザがデータを送信していることがわかります。
脚本:
$("#chatform").submit(function(e) {
e.preventDefault();
//serialText = $(this).serialize();
var userText = $("#usertext").val();
var xmlRequest = $.ajax({
type: "POST",
url: "/sendmessage/",
data: {'tosend': userText},
//dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function(data){
appendMessageSent(data.messagesent);
}
});
});
ビュー.py:
def send_message(request):
if request.is_ajax():
message = "The hell with the world"
print request.POST
json = simplejson.dumps(
{'messagesent' : request.POST['tosend']+"This is how we do it"}
)
return HttpResponse(json, mimetype='application/javascript')
html
<form id="chatform" action="" method="POST" >
<input type='hidden' name='csrfmiddlewaretoken' value='8idtqZb4Ovy6eshUtrAiYwtUBboW0PpZ' />
<input type="text" name="chatarea" id="usertext"/>
<input type="submit" value="Send">
</form>
dicttosend
にキーが見つからないというエラーが表示されます。request.post
MultiValueDictKeyError: "Key 'tosend' not found in <QueryDict: {}>
データがサーバーに送信されない理由、および/またはビューでデータにアクセスできない理由を誰か教えてもらえますか?