2014-06-06 89 views
0

页面上有多个div,每个div都有一个表单。我想要做一个AJAX获取,以便文本输入到一个窗体和包含该窗体的div的ID传递到一个Django视图,保存到数据库那里,然后文本显示在类似的div在页面底部。我写了下面的代码:如何在执行AJAX获取请求时摆脱MultiValueDictKey错误?

HTML

<div class="jumbotron" id="post #{{post.id}}"><h3>{{post.post}}</h3> 
<input type = "text" style="display:none;">{% csrf_token %}</input> 
<button type="button" class="btn-primary" id='{{post.id}}'>Add post.</button> 
</form> 
</div> 

scripts.js中

$(".btn-primary").click(function(){ 
      var post_id = $(this).attr('id'); 
      var post_text = $(this).parent().children("input").val(); 
       $.get('/makepost/'),{post_id:post_id, post_text:post_text }, function(data){ 
        newsimp_id = "#"+data; 
        $.scrollTo($(newsimp_id).position().top, 500); 
       } 
      }); 

Django的视图

def makepost(request): 
    context = RequestContext(request) 
    parent_post_id = int(request.GET['post_id']) 
    post_text = request.GET['post_text'] 
    parent_post = Post.objects.get(id=parent_post_id) 
    c = Post.objects.get_or_create(post = parent_post.post, parent_post = parent_post_id, post = post_text, coeficient = parent_post.coeficient + 1)[0] 
    new_post_id = c.id 
    return HttpResponse(new_post_id) 

这引发以下错误:

MultiValueDictKeyError at /makepost/ 
"'post_id'" 

post.post表示称为帖子的模型中的帖子字段。

我该怎么办?这个错误是什么意思?有其他选择吗?

+0

你需要显示错误的详细信息。您没有在您发布的代码中的任何位置使用密钥“simpler_id”:您应该显示实际的代码和完整的回溯。 –

+0

@DanielRoseman对不起。那是另一页的错误。错误地发布。现在编辑它。 –

回答

0

抱歉的人。这是一个语法错误。我错过了$ .get函数参数的parens。正确的代码:

scripts.js中

$(".btn-primary").click(function(){ 
      var post_id = $(this).attr('id'); 
      var post_text = $(this).parent().children("input").val(); 
       $.get(('/makepost/'),{post_id:post_id, post_text:post_text }, function(data){ 
        newsimp_id = "#"+data; 
        $.scrollTo($(newsimp_id).position().top, 500); 
       }); 
      });