2012-08-11 3 views
0

Я отправляю строку ниже в шаблон django.parse using javascript

<script> 
var data = '[{"a": 0}, {"b": 1}]' 
</script> 
  1. Как получить ключи как ["a", "b"] с помощью JavaScript
  2. Также мне нужен яваскрипт функции для получения значения для данного ключа.
+0

Я новичок Javascript. извините за этот простой вопрос. –

ответ

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(); 
1

Просто разобрать его, как JSON:

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

Вы должны преобразовать объект питона в формат, который 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 отлично подходит для преобразования нормальных объектов питона Если вы хотите, чтобы преобразовать QuerySet хотя, вам нужно использовать Джанго serialisers)

0
  1. Как получить ключи как [ "а", "б"] использование JavaScript

    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