Как вернуть словарь в Python Django и просмотреть его в JavaScript? - PullRequest
7 голосов
/ 24 июня 2011

Я возвращаю это на мой взгляд:

    data = {'val1' : 'this is x', 'val2' : True}
    return HttpResponse(data)

Я хочу использовать эту информацию в словаре в моем javascript. Вроде как это:

            function(data) {
                if (data["val2"]) {
                    //success
                    alert(data["val1"]);
                }
            }

Однако мой JavaScript не работает. Предупреждение не появляется, и я знаю, что в словаре есть информация, когда он покидает мой вид Python.

Как я могу прочитать эту информацию в моем JS?


Хорошо, так что ответом для представления является simplejson.dumps (data). Теперь, когда я делаю предупреждение (данные) в моем JS на моем шаблоне, я получаю {'val1': 'это x', 'val2': True} . Теперь, как мне справиться со 2-й частью вопроса, которая считывает значения типа

        function(data) {
            if (data["val2"]) {
                //success
                alert(data["val1"]);
            }
        }

UPDATE: Simplejson.dumps (data) преобразует словарь в строку. Так что в javascript вам нужно преобразовать строку в объект. Это самый простой, но, по-видимому, небезопасный способ.

var myObject = eval('(' + myJSONtext + ')');

Ответы [ 4 ]

13 голосов
/ 24 июня 2011

Очень просто:

import json
data = {'val1' : 'this is x', 'val2' : True}
return HttpResponse( json.dumps( data ) )
7 голосов
/ 25 июня 2011

JSON - это самый простой способ передачи данных (также вы можете использовать XML).

В питоне:

    import json
    data = {'val1': "this is x", 'val2': True}
    return HttpResponse(json.dumps(data))

В JavaScript:

    function (data) {
        data = JSON.parse(data);
        if (data["val2"]) {
            alert(data["val1"]);
        }
    }
2 голосов
/ 24 июня 2011

Вы не можете напрямую использовать объект python, который вам необходимо сначала преобразовать в строку JSON. Просмотрите следующую документацию.

http://docs.python.org/library/json.html также http://www.json.org/

1 голос
/ 23 ноября 2012

Просто укажите mimetype в HttpResponse

    return HttpResponse(
                        json.dumps({"status":False, "message":"Please enter a report name."}) ,
                        mimetype="application/json"
                        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...