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