2

ここにjqueryがあります

$.ajax({
    type: "POST",
    url: "/posthere",
    dataType: "json",
    data: {myDict:{'1':'1', '2':'2'}},
    success: function(data){
        //do code
    }
});

ここにパイソンがあります

@route("/posthere", method="POST")
def postResource(myDict):
    #do code
    return "something"

int、float、path、および re をサポートする URL 形式のように見えます...何か不足していますか?

4

2 に答える 2

7

ワイヤ上にはバイトしかありません。オブジェクトを送信するには、 jsonなどのデータ形式を使用してシリアル化する必要があります。

$.ajax({
    type: "POST",
    url: "/posthere",
    data: JSON.stringify({myDict: {'1':'1', '2':'2'}}),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data){
        alert(data);
    },
    failure: function(err) {
        alert(err);
    }
});

受信側では、json テキストを Python オブジェクトに解析する必要があります。

from bottle import request, route

@route("/posthere", method="POST")
def postResource():
    #do code
    myDict = request.json['myDict']
    return {"result": "something"}

返された辞書は自動的に json に変換されます。

于 2012-10-10T05:06:26.597 に答える
0

あまり関係ないかもしれませんが、要するに答えは No と Yes です。jquery の data 属性を使用している場合。実際にオブジェクトをフィールドに変換します。そんな感じ:

{
  friend: [1,2,3]
}

次のようにサーバーに送信される場合があります。

friend[0]=1&friend[1]=2&friend[2]=3

とはいえ、HTTP は実際にはサーバーにデータを送信する「正しい」方法を定義していません。jQuery は、クライアントがフォームを投稿したかのように機能させるためにこれを行います。つまり、formdata のようなデータをシリアライズしています。

しかし、それだけではありません!好きなようにデータを送ることができるので。別のことができます。jQueryで生データを送信できるかどうかはわかりません。

あなたはそれを試してみたいかもしれません:

$.ajax({
  url: ...,
  data: myObject.toJSON(),
  ...
})

定義されたフィールドなしで文字列を送信しているため。サーバーで生データを確認する必要があります。文字列を dict に変換JSONすれば、準備完了です。

json をサーバーに送信するには、jsonrpc という素晴らしいものがあります。

http://www.jsonrpc.org/

残念ながら、私の知識はbottle.pyゼロに近いため、データの取得方法についてはあまり役に立ちません。

tldr

jsonをサーバーに送信し、それを解析して辞書に戻します。反対側で解析する方法を知っている限り、他のものを送信できます。(xml、json、メッセージパック...)

于 2012-10-10T03:01:37.767 に答える