1
chairuosen 2014-07-21 19:14:12 +08:00
传JSON呗
|
2
forreal OP @chairuosen
我看到jquery官方jquery.post()的api Example: Pass arrays of data to the server (while still ignoring the return results). 1 $.post( "test.php", { 'choices[]': [ "Jon", "Susan" ] } ); 但是我这么用就不行,flask的request.form中只有 'choices[]'="jon" |
3
forreal OP @chairuosen
难道是php可以python的flask不可以? |
4
chairuosen 2014-07-21 19:54:58 +08:00 1
不太清除,
在chrome里看 代码$.post('/',{a:{b:1,c:{d:2,e:3}}}) 实际发送的数据是字符串a%5Bb%5D=1&a%5Bc%5D%5Bd%5D=2&a%5Bc%5D%5Be%5D=3 这就得看你的后端解析的怎么样了,不清楚flask |
5
forreal OP 难道真是flask的问题……
|
6
timonwong 2014-07-21 20:25:14 +08:00 1
首先,你得确认你的ajax请求是什么,虽然默认是application/x-www-form-urlencoded,但是也可以全局的改为其它的类型,比如如果你定义成 application/json, request.form当然就拿不到了
下面的 contentType, 你可以使用 request.form.getlist(),因为都是 request.form multipart/form-data application/x-www-form-urlencoded application/x-url-encoded |
7
forreal OP @chairuosen
解决了,我在debug下看的request.form变量,可能是werkzeug的数据结构问题,在debug下只能看到reuqest.form的第一个值,但是调用request.form.getlist()能取到完整的数组。 |
8
Hackathon 2014-07-21 20:25:44 +08:00 1
还没看过flask
Django是把post过来的数据放一份到request.body里 有些复杂格式传递过来, request.GET, request.POST解析不了 这时候你就去request.body里自己取出来解析就可以了 |
9
forreal OP |
11
xavierskip 2014-07-21 20:40:30 +08:00 1
js 先 array.toString(),后端再 string.split() 不可以吗?
|
12
xiaozhang 2014-07-21 20:44:29 +08:00 1
也可以用 json
$.ajax({ type: 'POST', url: url, data: JSON.stringify({a: [1,2], b: 3}), contentType: 'application/json' }) 在 flask 里用 request.json 可以直接拿到对应的 dict 对象: request.json 就是 {'a': [1,2], 'b': 3} 了,request.json.get('a') 就是 [1,2] |
13
yangzh 2014-07-21 22:14:40 +08:00
request.args()
|
14
forreal OP @xavierskip
可以,但是官方提供了方法,我就尽可能用官方的,array里的字符串如果有逗号,可能还要做特殊处理吧,没试过。 |
15
forreal OP |
16
Honwhy 2014-07-21 23:16:07 +08:00 1
我和你说一个类似的吧
我后端用的struts 2.x,前端用jQuery,用post同样不行 用那种 { 'choices[]': [ "Jon", "Susan" ] }同样不行,后面也是用了 $.ajax这种方式。 |
17
xiaozhang 2014-07-22 10:23:27 +08:00 1
|
18
forreal OP @Honwhy
不了解struts2,我用jquery时,传的的字典{"ids":[1,2,3]},但是到了flask后请求体的key变为了"ids[]",不知道是jquery还是flask把"ids"变为"ids[]",所以取值时用"ids[]"就可以取出来,而用"ids"不可以。 传json可以作为框架不支持取数组的备用方法。以后打算看一看spring mvc,不知道支不支持直接取数组。 |
20
Codelike 2018-04-25 17:45:39 +08:00
数组转成 json,来进行传递。
|