2016-07-01 22 views
1

Djangoを利用したクライアントサイドのJavaScriptとサーバーサイドのPythonがあります。データオブジェクトはfoo_data = {"foo":1, "bar":2}です。JSONオブジェクトをPOST経由でJavaScriptからPythonに送信

今、私はdojo/request/xhrを使用して、ポスト要求を送信するために好きで、別の変数と一緒にfoo_dataを送信します:

xhr.post(document.location.href, { 
    data: { 
     'is_foo': true, 
     'data': foo_data 
    }, 
    headers: { 'Content-Type': 'application/json' } 
}).then(function(text){ 
    console.log('The server returned: ', text); 
}); 

そしてDjangoのviews.pyファイルで送信されたデータを読む:

def post(self, request, *args, **kwargs): 
    json.loads(request.body) 

しかし、それは動作しません:

  • もし私がssend foo_data PythonはそれをJSONオブジェクトとして正しく認識せず、json.loadsを使って読み取ることができません。
  • foo_dataを使用してJSON.parseをエンコードすることはできません。既にオブジェクトですから!
  • request.POSTは空QueryDict
  • request.bodyでこの問題を解決する方法を、文字列の単語object(代わりに、実際のオブジェクトの)

に任意のアイデアを持っていますか?

目標:JS - > PythonからJSONオブジェクトを送信し、サーバー側でそれを読み取ります。

答えて

2

dojo.xhrが廃止されました、ここにdojo/request詳細は使用することを検討してください: https://dojotoolkit.org/documentation/tutorials/1.8/ajax/demo/dojo-request-xhr-post.php

:サーバーへのポストのライブたとえば

https://dojotoolkit.org/reference-guide/1.10/dojo/request/xhr.html#dojo-request-xhr

を、あなたはこのページのソースコードを見ることができます

ここではいくつかの使い方の簡単な例:

 require(dojo/request"], 
      function(request){ 
        // post the data to the server 
        request.post("your/server/script", { 
         // send your data here 
         data: { yourData: 1}, 
         // wait 2 seconds for a response 
         timeout: 2000 

        }).then(function(response){ 
         // do smt here when operation is successfully executed 
        }); 

      } 
     ); 

あなたの質問のあなたのコードサンプルについて、あなたはサーバー側のコードを投稿していません。しかし、JSON.stringify()を使用してデータをサーバーに渡そうとする可能性があります。

関連する問題