2011-06-24 3 views
5

私は、私の見解では、これを返している:私は私のjavascriptの内辞書にこの情報を使用したいpython djangoで辞書を返す方法とjavascriptでそれを表示するには?

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

。このような種類:

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

しかし、私のJavaScriptは動作しません。アラートがポップアップすることはなく、私はPythonのビューを離れるときに辞書に情報があることを知っています。

JSでこの情報を読むにはどうすればよいですか?ビューのための答えが(データ)simplejson.dumpsするよう


[OK]をクリックします。 テンプレートのJSでアラート(データ)を実行すると、{'val1': 'this is x'、 'val2':True}と表示されます。 simplejson.dumps(データ)は、文字列の中に目の辞書を変換します は今どのように私は

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

UPDATEなどの値が読み出され、質問の第二の部分を管理することができます。だからJavaScriptの文字列をオブジェクトに変換する必要があります。 これは最も簡単ですが明らかに危険な方法です。

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

で[ジャンゴを経由してJavaScriptにPythonのデータの受け渡し]の可能な複製をMIMEタイプを指定します://stackoverflow.com/questions/1445989/passing-python-data-to-javascript-via-django) –

+1

あなたがAjax、上記の質問の答えがあなたを助けます。 –

+0

リクエストにAJAX(XmlHttpRequest)を使用していますか? –

答えて

11

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

私はこれをJS {'val1': 'this is x'、 'val2':True}に返します。今、特定の値だけにアクセスするにはどうすればいいですか? val1のように?このデータ["val1"]のように?私は警告(データ["val1"])しようとすると私は未定義になる。 – darren

+0

あなたはdata.val1を試しましたか? –

+0

はい、それでも未定義を返します: – Sohaib

6

JSONは(も、あなたがXMLを使用することができます)データを転送する最も簡単な方法です。 Pythonで

:JavaScriptで

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

 
    function (data) { 
     data = JSON.parse(data); 
     if (data["val2"]) { 
      alert(data["val1"]); 
     } 
    } 
+0

これは正解です。代わりにShwetabh Sharanの答えのようにmimetypeを指定してください – mpaf

1

ただ、HTTP(はHttpResponse

return HttpResponse(
         json.dumps({"status":False, "message":"Please enter a report name."}) , 
         mimetype="application/json" 
         ) 
+0

これは正解の1つです – mpaf

+1

Django 1.9では、 'mimetype'は' content_type ' – cs01

関連する問題