将变量传递给视图

时间:2011-09-07 21:51:11

标签: javascript jquery django

我有一个选择选项列表和一个jstree对象,我想将用户选择传递给django视图来处理它并获得响应。我肯定做错了但我不知道如何解决它。我可以在调度程序视图中获取值,但模板永远不会加载,它会保留在上一个视图中(生成下面发布的模板的视图)。

<html>
<body>
<select  id="opt" name="numbers">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

<input id="goButton" value="Go!" class="btn small info" />

<div id="demo2" class="demo">
    <ul>
    {% for car_type, cs in cars.items %}
        <li>
            <a>{{ car_type }}</a>
                <ul>
                    {% for c in cs %}
                        <li><a id="{{c.0}}">{{c.1}}</a></li>
                    {% endfor %}
                </ul>
        </li>
    {% endfor %}
    </ul>
</div>
<script>
    $(function () {
        $("#demo2").jstree({ 
             .........

        function submitMe(){ 
            var checked_ids = new Array();
            var car_amount = $("select option:selected").val();
            $("#demo2").jstree("get_checked",null,true).each 
                (function (index,value) {
                    if (value.children[2].id) { 
                        checked_ids.push(value.children[2].id); 
                    }
                });
            var car_ids = checked_ids.join(" ");
            $.ajax({
                type: 'POST',
                url: "{% url scheduler %}",
                data: {'car_ids': car_ids, 'car': car_amount},
                dataType: "json"
            });
        };

        $("#goButton").click(function() {
            submitMe();
        });
    });
</script>
</body>
</html>

views.py(调度器):

def scheduler(request):

    if request.is_ajax():
        c_ids = request.POST['car_ids'].split(" ")
        cars = request.POST['car']
        .......

    context = {
        'cars' : cars, 
    }
    return render_to_response(
        'scheduler.html',
         context,
         context_instance = RequestContext(request),
    )

1 个答案:

答案 0 :(得分:0)

您的视图会返回一个呈现的模板,但您的Ajax不会对其执行任何操作。

如果您只是希望按钮将用户带到新页面,则根本不应使用Ajax。只需将值放入表单中,然后使按钮正常input type="submit"即可。