如何在jquery中获取表单id的'id'

时间:2013-07-22 22:10:37

标签: jquery django django-views

我无法将form id传递给views.py页面。 jQuery没有将'id'传递给views页面。请告诉我我做错了什么。

这是我的jQuery。

$(function(){
        $('.chatroom').submit(function () {

            $.ajax({
                type: "POST",

                url: "/dashboard",
                data : {
                            'chatroom_id' : $(this).attr('id')
                        },

                    });

            });

这是我的模板

{% for key, values in chat_data.items %}
        <div class="container-fluid" alt = {{key}}>
            <div class="row-fluid">
               <div class="span2">
                 {{values.from}} <br/> {{values.init_query}}
                </div>

            <div class="span10 well">

                {% for k in values.chat %}

                        <label> Text : {{k.text}} </label> 
                        <label> {{k.date_time}} </label>

                {% endfor %}        

            <form action = "#" method = "POST" id = {{key}} class="chatroom">
               {% csrf_token %}
                   {{ form.as_p }}

                <input type="submit" value = "Sent" class="btn btn-primary"> 
            </form>

                </div>
            </div>
        </div>
    {% endfor %}

Views.py

if request.is_ajax():
    if request.method == "POST":
        chatroom_id = request.POST['chatroom_id']
else:
    chatroom_id =''

print chatroom_id

当我删除if request.is_ajax()条件时,它会显示错误"Key 'chatroom_id' not found in <QueryDict: {u'reply': [u''], u'csrfmiddlewaretoken': [u'yIJct9O7WfyPnWmDosW9N5TEklRwoIHP']}>"

2 个答案:

答案 0 :(得分:1)

你说你必须删除is_ajax()方法,这显示实际上你根本没有看到Ajax帖子,而是标准的浏览器表单提交。这是因为您没有阻止jQuery代码中的默认提交操作。

应该是:

$('.chatroom').submit(function(event) {
    event.preventDefault();
    $.ajax({
        ...

答案 1 :(得分:0)

以下不是您的问题的原因,但会导致JS错误(语法错误):

$(function(){
    $('.chatroom').submit(function () {
        $.ajax({
            type: "POST",
            url: "/dashboard",
            data : {
                chatroom_id: $(this).attr('id')
            } // you had a dangling comma here
        });
    }); // you were missing a closing bracket and paren here
});