我将以下字符串发送到 django 模板。
<script>
var data = '[{"a": 0}, {"b": 1}]'
</script>
- 如何像
["a", "b"]
使用 javascript一样获取密钥 - 我还需要一个 javascript 函数来检索给定键的值。
我将以下字符串发送到 django 模板。
<script>
var data = '[{"a": 0}, {"b": 1}]'
</script>
["a", "b"]
使用 javascript一样获取密钥只需将其解析为 JSON:
var obj = JSON.parse(data);
obj[0].a // access to a
obj[1].b // access to b
你需要将python对象转换成javascript可以理解的格式,即json。为此,请simplejson
在您的视图中使用:
from django.utils import simplejson
from django.shortcuts import render
def some_view(request):
...
python_data = [
{ 'a' : 'foo', 'b' : 'bar' },
...
]
json_data = simplejson.dumps(python_data)
render(request, "some_template.html", { 'data' : json_data })
并在您的模板中:
<script>
var data = {{ data|safe }}
</script>
(Simplejson 可以很好地转换普通的 python 对象。如果你想转换一个 QuerySet,你需要使用 Django 的序列化器)
如何使用 javascript 获取密钥为 ["a", "b"]
var arrMain = [{"a": 2}, {"b": 3}],
arrKey = [];
for (key in arrMain) {
if (arrMain.hasOwnProperty(key)) {
arrKey.push(Object.keys(arrMain[key])[0]);
}
}
console.log(JSON.stringify(arrKey)); // returns ["a","b"]
我还需要一个 javascript 函数来检索给定键的值。
function returnValueByKey(arrMain, arrKey, lookupKey) {
for (key in arrKey) {
if (arrKey.hasOwnProperty(key) && arrKey[key] === lookupKey) {
return arrMain[key][arrKey[key]];
}
}
}
console.log(returnValueByKey(arrMain, arrKey, 'a')); // returns 2
为什么不返回 JSON?
from django.utils import simplejson
def function(request):
if not request.is_ajax():
raise Http404
data = list(
dict(
a=0,
b=1
)
)
return HttpResponse(simplejson.dumps(data), mimetype='application/json')
javascript(在本例中使用 jquery)
function getData(){
$.ajax({
type: "GET",
url: "/your/url/to/function/",
success: function(data){
return data;
}
});
}
var data = getData();