2013-04-04 11 views
5

私のクライアントからネストされたオブジェクトを含むjsonオブジェクトを自分のサーバーに渡したいと思っています。クライアント側のjsonオブジェクトをjquery ajaxを使って正しくフラスコサーバーに渡す方法

、私のデータ構造は次のようになります。

var response = {}; 
response['screening'] = '1'; 
response['assistance'] = 'wheelchair access'; 
response['guests'] = {}; 
response['guests']['1'] = {} 
response['guests']['1']['first'] = 'John' 
response['guests']['1']['last'] = 'Smith' 
response['guests']['2'] = {} 
response['guests']['2']['first'] = 'Dave' 
response['guests']['2']['last'] = 'Smith' 

と私のAJAX呼び出しは次のようになります。私のサーバーにこのデータを投稿した後

$.ajax({ 
    type: "POST", 
    url: window.location.pathname, 
    data: response 
}).done(function(msg) { 
    alert("Data Saved: " + msg); 
}); 

、使用して実行されます私はクライアントから投稿されたものを調べるためにrequest.formオブジェクトを使います。 [「ゲスト」]オブジェクトが平らにしまった、とそのすべての、あなたが見ることができるよう

ImmutableMultiDict([('guests[1][first]', u'John'), ('screening', u'2'), ('guests[2][last]', u'Smith'), ('guests[2][first]', u'Dave'), ('assistance', u'wheelchair access'), ('guests[1][last]', u'Smith')]) 

応答を:私は、しかし、これはサーバーに出力され、データが同じように構造化することがしたいのですが以下のような子供、:

'ゲスト[2] [最初]'

は...文字列だけではなく、その親レスポンス[ 'ゲスト']の要素です。

このブロックをクライアントからサーバーに送信し、構造を適切に維持するには、より良い方法がありますか?

ありがとうございました!

答えて

11

あなたはJSON文字列として、あなたのオブジェクトを送信できます。

var data = { 
    screening: '1', 
    assistance: 'wheelchair access', 
    guests: [ 
     { 
      first: 'John', 
      last: 'Smith' 
     }, 
     { 
      first: 'Dave', 
      last: 'Smith' 
     } 
    ] 
}; 

$.ajax({ 
    type: 'POST', 
    url: window.location.href, 
    data: JSON.stringify(response), 
    dataType: 'json', 
    contentType: 'application/json; charset=utf-8' 
}).done(function(msg) { 
    alert("Data Saved: " + msg); 
}); 

し、それをアクセスするためにrequest.jsonを使用しています。

+0

完全に動作します!ありがとう。私のサーバ上のデータを見ることができても、.done()メソッドは決して実行されません。また、chrome devのネットワークタブをチェックすると、このリクエストのPOST 200 OKがあります。 – SeanPlusPlus

+0

上記のコメントは絶対に気にしないでください。私はサーバーからの私の応答をjsonifyする必要があります。これに助けてくれてありがとう。 – SeanPlusPlus

0

クライアント側では、そのJavaScriptオブジェクトをjson文字列に変換する必要があります。サーバー側で、あなたはJSONモジュールを使用してPythonのdictionnaryにそのオブジェクトを変換する必要が続いて

JSON.stringify(my_object) // This will return a string that you can pass in you ajax request 

:そのためには、これを使用することができ

import simplejson 
my_new_object = simplejson.loads(my_json) // my_json is my_object from the client (previously called my_object) 

my_new_objectは今のpython dictionnaryですあなたはそれで何でもできます。

関連する問題