Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将对象从jquery发布到瓶子.py?_Jquery_Python_Bottle - Fatal编程技术网

是否可以将对象从jquery发布到瓶子.py?

是否可以将对象从jquery发布到瓶子.py?,jquery,python,bottle,Jquery,Python,Bottle,这是jquery $.ajax({ type: "POST", url: "/posthere", dataType: "json", data: {myDict:{'1':'1', '2':'2'}}, success: function(data){ //do code } }); 这是python @route("/posthere", method="POST") def postResource(myDict):

这是jquery

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

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

它看起来像是支持int、float、path和re。。。我遗漏了什么吗?

可能没有那么重要,但简而言之,答案是否定和肯定。如果您使用的是jquery的data属性。它实际上会将对象转换为字段。诸如此类:

{
  friend: [1,2,3]
}
可以这样发送到服务器:

friend[0]=1&friend[1]=2&friend[2]=3
也就是说,HTTP实际上没有定义任何向服务器发送数据的“正确”方式。jQuery这样做是为了让它像客户机发布表单一样工作。因此,它是像formdata一样序列化数据

但这还不是全部!因为你可以随意发送数据。你可以做一些不同的事情。我不确定是否可以使用jQuery发送原始数据

您可能想试试:

$.ajax({
  url: ...,
  data: myObject.toJSON(),
  ...
})
因为您发送的字符串没有任何定义的字段。您必须在服务器上检查原始数据。将
JSON
字符串转换为dict,就可以开始了

为了向服务器发送json,有一个很棒的东西叫做jsonrpc

不幸的是,我对
battle.py
的了解接近于0,因此在如何获取数据方面我帮不了多少忙

tldr


将json发送到服务器,然后将其解析回dict,您可以发送任何其他内容,只要您知道如何在另一端解析它。(xml、json、messagepack…

线路上只有字节。要发送对象,您需要使用某些数据格式对其进行序列化,例如:

在接收端,您需要将json文本解析为Python对象:

from bottle import request, route

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

返回的字典将自动转换为json。

dataType
指定返回类型,而不是传递的数据类型。
data
需要是单级对象(哈希表),而不是层次结构。
from bottle import request, route

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