Django和javascript问题

Django和javascript问题,javascript,django,Javascript,Django,我想在url中插入一个变量,如代码中所示。但它给出了一个错误 function initializeDataTable(id){ var columnSize = $('table th').size(); $('#table').dataTable({ "sDom" : 'rtFip>', 'fnDrawCallback' : function() { $('input:checkbox, input:

我想在url中插入一个变量,如代码中所示。但它给出了一个错误

   function initializeDataTable(id){
        var columnSize = $('table th').size();
    $('#table').dataTable({
        "sDom" : 'rtFip>',
        'fnDrawCallback' : function() {
            $('input:checkbox, input:radio').checkbox();
        },
        "bStateSave": true,
        'sPaginationType' : 'full_numbers',
        "bServerSide" : true,
        "sAjaxSource" : "{% url 'get_menu_list' '" + id + "' %}"
   });
  };
我想获得所选的选项,在选项更改事件中,我将调用上面的函数。我该怎么做?

你不能这样做:

"sAjaxSource" : "{% url 'get_menu_list' '" + id + "' %}"
{%%}
是服务器端指令。服务器处理它们,然后将它们放在响应页面中。javascript函数在客户端运行。它不能像您在这里期望的那样与服务器对话并要求它提供数据。您必须执行不依赖于服务器的操作,例如:

"sAjaxSource": "/get_menu_list/" + id

我想你把服务器端和客户端搞混了。这件

 "{% url 'get_menu_list' '" + id + "' %}"

应该在服务器端进行解释。到那时,服务器端还不知道什么是“id”

然后可以将url作为变量传递给函数:

<script>
function initializeDataTable(data_url) {
    var columnSize = $('table th').size();

    $('#table').dataTable({
        "sDom" : 'rtFip>',
        'fnDrawCallback' : function() {
            $('input:checkbox, input:radio').checkbox();
        },
        "bStateSave": true,
        'sPaginationType' : 'full_numbers',
        "bServerSide" : true,
        "sAjaxSource" : data_url
   });
}

$(function(){
    initializeDataTable("{% url 'get_menu_list' item.id %}");
});
</script>
要确保Django.js加载URL,请收听
ready
事件:

// Wait for document ready
$(function(){
    initializeDataTable(42);
});

// Wait for Django ready
Django.onReady(function(){
    initializeDataTable(42);
});

具体是什么错误?不,它不起作用。克劳迪乌先生的解决方案有效。我认为我们不能使用像那样的url反向函数。@Burak我不是说它工作正常。我在解释为什么这段代码是错误的啊好吧,我明白你的意思了。谢谢
{% load js %}
{% django_js %}
<script>
function initializeDataTable(id) {
    var columnSize = $('table th').size();

    $('#table').dataTable({
        "sDom" : 'rtFip>',
        'fnDrawCallback' : function() {
            $('input:checkbox, input:radio').checkbox();
        },
        "bStateSave": true,
        'sPaginationType' : 'full_numbers',
        "bServerSide" : true,
        "sAjaxSource" : Django.url('get_menu_list', id)
   });
}

$(function(){
    initializeDataTable(42);
});
</script>
// Wait for document ready
$(function(){
    initializeDataTable(42);
});

// Wait for Django ready
Django.onReady(function(){
    initializeDataTable(42);
});