Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I'm returning this in my view:

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

I want to use this information in the dictionary within my javascript. Kind of like this:

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

However my javascript doesn't work. There is no alert popping up and I know that the dictionary has the information when it leaves my python view.

How can I read this information in my JS?


Ok so the answer for the view is to simplejson.dumps(data). Now when I do an alert(data) in my JS on my template I get {'val1' : 'this is x', 'val2' : True}. Now how can I manage the 2nd part of the question which is read out the values like

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

UPDATE: The simplejson.dumps(data) converts th dictionary into string. So in the javascript you need to convert the string to an object. THis is the easiest but apparently unsafe way.

var myObject = eval('(' + myJSONtext + ')');
share|improve this question
1  
possible duplicate of Passing Python Data to JavaScript via Django – Felix Kling Jun 24 '11 at 12:32
1  
Even if you use Ajax, the answers in the above question will help you. – Felix Kling Jun 24 '11 at 12:33
Are you using an AJAX (XmlHttpRequest) to make the request? – John Strickler Jun 24 '11 at 12:33
yes it's ajax and that question did help me understand that I must use jsdump in the view thanks. now i just want to know how to access the object in the template. – mongoose_za Jun 24 '11 at 13:13

4 Answers

up vote 4 down vote accepted

Very simply:

import json
data = {'val1' : 'this is x', 'val2' : True}
return HttpResponse( json.dumps( data ) )
share|improve this answer
ok i have this back in the JS {'val1' : 'this is x', 'val2' : True}. Now how can I access just the specific values. Like val1? like this data["val1"]? I get an undefined when I try alert(data["val1"]); – mongoose_za Jun 24 '11 at 13:12
have you tried data.val1? – Johnny Brown Jun 24 '11 at 14:20
Yes it still gives undefined :( – SilentPro Jul 2 at 8:35

You can not directly use the python object you have to convert it into JSON string first Look into following documentation.

http://docs.python.org/library/json.html also http://www.json.org/

share|improve this answer

JSON is easiest way to transfer data(also you can use XML).

In python:

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

In javascript:

    function (data) {
        data = JSON.parse(data);
        if (data["val2"]) {
            alert(data["val1"]);
        }
    }
share|improve this answer

Just specify the mimetype in HttpResponse

    return HttpResponse(
                        json.dumps({"status":False, "message":"Please enter a report name."}) ,
                        mimetype="application/json"
                        )
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.