0

我无法将 传递form id给 views.py 页面。jQuery 不会将“id”传递给视图页面。请告诉我我做错了什么。

这是我的 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 %}

视图.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']}>"

4

2 回答 2

1

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

它应该是:

$('.chatroom').submit(function(event) {
    event.preventDefault();
    $.ajax({
        ...
于 2013-07-22T23:33:28.793 回答
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
});
于 2013-07-22T23:13:59.170 回答