使用javascript解析

时间:2012-08-11 14:13:28

标签: javascript django

我将以下字符串发送到django模板。

<script>
var data = '[{"a": 0}, {"b": 1}]'
</script>
  1. 如何使用javascript
  2. 将密钥设为["a", "b"]
  3. 我还需要一个javascript函数来检索给定键的值。

4 个答案:

答案 0 :(得分:1)

只需将其解析为JSON:

var obj = JSON.parse(data);
obj[0].a // access to a
obj[1].b // access to b

答案 1 :(得分:1)

您需要将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的serialisers

答案 2 :(得分:0)

为什么不返回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();

答案 3 :(得分:0)

  1. 如何使用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"]
    
  2. 此外,我需要一个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