0

我有一本 Javascript 字典,我将它传递给 Django 中的一个函数。但是当我尝试访问 POST 中的数据时,它说当密钥明显存在时找不到密钥消息。我一直在为这个问题挠头。我是 Javascript 和 Jquery 的新手,所以我确定我犯了一个简单的错误。

继承人的代码:

function share(id) {
  var message = $('textarea#message').val();
  var postData = { message: message, id: id };
  $.post( "/{{ username }}/post/", postData, function ( json ) {
    $('#posts').load(' #posts', function(){$(this).children().unwrap()})
  } );
}

确切的错误:

/Mohammed/post/ 处的 MultiValueDictKeyError “在请求方法中找不到键‘消息’:POST

更新 所以我已经缩小了这个问题的范围,它的 var 消息没有得到一个值。我试图从中获取值的html如下:

 <textarea class="input-xlarge inputConvo"  value = "" name="message" id="textarea" rows="2" style="width:98%; min-width:98%; max-width:98%;" placeholder="Share something with <user>."></textarea>

谢谢您的帮助

4

3 回答 3

3

啊哈!你没有正确理解元素。试试这个:

var message = $('#textarea').val();

语法意味着使用textarea获取#元素id。不是名字。您可以将消息更改为并使用id$('#message').val();

于 2012-08-09T02:43:34.180 回答
1

jQuery 部分对我来说看起来不错。确保您在服务器端执行以下操作:

message = request.POST['message']

如果这不起作用,您可以尝试以下操作,它将同时查看 GET 和 POST。

message = request.REQUEST['message']

如果您仍然没有任何运气,请尝试打印request.POSTrequest.REQUEST到控制台,例如

print request.REQUEST
于 2012-08-09T02:31:40.503 回答
0

您应该dict以更安全的方式从对象中提取数据,如下所示:

request.REQUEST.get('message', '')

这将避免任何Key not found错误。只需根据需要设置默认值即可。

于 2012-08-09T02:35:05.607 回答