gpt4 book ai didi

django - 未使用 jquery .ajax() 将数据发送到 Django View

转载 作者:行者123 更新时间:2023-12-01 02:31:35 25 4
gpt4 key购买 nike

我正在尝试创建一个 ajax 调用。 ajax 调用被发送到服务器,但我发送的数据在 View 中的请求对象中不可用。当我打印request.post时,它给出 <QueryDict: {}> 。没有数据发送到服务器。我知道浏览器正在发送数据,因为我可以在 chrome 的请求负载中查看它。

脚本:

$("#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);
}
});
});

view.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>

我收到一条错误消息,指出该键 tosend未在 request.post 中找到字典。

MultiValueDictKeyError: "Key 'tosend' not found in <QueryDict: {}>

谁能告诉我为什么数据没有发送到服务器和/或为什么我无法在我的 View 中访问它?

最佳答案

要使表单数据出现在 request.POST 中,请使用 contentType: "application/x-www-form-urlencoded"

如果使用application/json,则必须自己解析原始数据(django <1.4中的request.raw_post_datarequest.body 在 Django >=1.4):

def send_message(request):
if request.is_ajax():
message = "The hell with the world"

data = json.loads(request.body)
result = json.dumps({'messagesent' : data['tosend'] + "This is how we do it"})
return HttpResponse(result, mimetype='application/javascript')

关于django - 未使用 jquery .ajax() 将数据发送到 Django View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15230627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com