datatables json ajax,Datatables Ajax在从文件读取JSON时起作用,但不能从变量(Django)读取JSON...

2023-05-16

我已经被这个问题困扰了好几天了。我试图将JSON数据馈送到DataTables,但它只有在我使用静态文件作为源时才起作用(见下文)索引.html). 在

在索引.html在$(document).ready(function() {

$('#mydata').DataTable( {

"ajax": {

"url": '{% static "myapp/supplier.json" %}', //<= works

{# "url": '{{ suppliers_all }}',#} //<=does not work

"dataSrc": ""

},

"columns": [

{ "data": "name" },

{ "data": "classification" },

]

} );

} );

在视图.py在

^{pr2}$

JSON输出:[{"classification": "Base Supplier", "name": "Supplier Name1"}, {"classification": "Strategic Supplier", "name": "Supplier Name2"}]

当我使用django传递的变量{{ suppliers_all }}时,浏览器调试返回a 404 not found error。我尝试了根据网站的例子对JSON输出进行硬编码,尝试了很多不同的方法,但如果不直接从文件中获取,它将永远无法工作。在

更新:

通过使用JSON-Httpresponse和url创建新视图解决了这个问题def supjson(request):

suppliers_all = Supplier.objects.all().values('name', 'classification')

suppliers_all = json.dumps(list(suppliers_all), cls=DjangoJSONEncoder)

context = {'suppliers_all': suppliers_all,

return HttpResponse(suppliers_all, content_type='application/json')

然后将Ajax url更改为:"ajax": {

"url": '{% url 'myapp:supjson' %}',

"dataSrc": ""

},

当它工作时,我觉得这是多余的解决方案,因为我有问题直接通过变量传递数据。在

Update#2:问题是由于Django自动转义单逗号导致JSON解析无法正常工作。我做了以下更改:

增加了mark_保险箱视图.py在context = {'suppliers_all': mark_safe(suppliers_all),

}

字符串化JSON,然后在索引.html模板:$(document).ready(function() {

var json=JSON.stringify({{ suppliers_all }});

$('#mydata').DataTable( {

"data": JSON.parse(json),

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

datatables json ajax,Datatables Ajax在从文件读取JSON时起作用,但不能从变量(Django)读取JSON... 的相关文章

随机推荐