Ben*_*174 2 javascript python django jquery
我的Javascript:
var postData = {
customer: 'test',
order: 1,
boxes: [
{
"size":"2",
"color":"1",
"colorNumber":"1",
"barCode":"1234567890",
"barCodePic":"",
},
{
"size":"3",
"color":"1",
"colorNumber":"2",
"barCode":"0987654321",
"barCodePic":"",
}
]
}
jQuery.post("http://10.0.1.7:8001/bapi/order/", postData );
Run Code Online (Sandbox Code Playgroud)
我的蟒蛇:
print 'Customer:', request.POST.get('customer', None)
print 'Order:', request.POST.get('order', None)
print 'get - boxes:', request.POST.get('boxes', None)
print 'get - boxes[]:', request.POST.get('boxes[]', None)
print 'getlist - boxes[]:', request.POST.getlist('boxes[]')
print 'getlist - boxes:', request.POST.getlist('boxes')
print request.POST
Run Code Online (Sandbox Code Playgroud)
输出:
Customer: test
Order: 1
get - boxes: None
get - boxes[]: None
getlist - boxes[]: []
getlist - boxes: []
<QueryDict: {u'customer': [u'test'], u'boxes[1][barCode]': [u'0987654321'], u'boxes[0][size]': [u'2'], u'boxes[1][colorNumber]': [u'2'], u'boxes[1][size]': [u'3'], u'boxes[0][colorNumber]': [u'1'], u'boxes[1][color]': [u'1'], u'boxes[0][barCode]': [u'1234567890'], u'boxes[1][barCodePic]': [u''], u'boxes[0][barCodePic]': [u''], u'boxes[0][color]': [u'1'], u'order': [u'1']}>
Run Code Online (Sandbox Code Playgroud)
我所做的一切都没有像我期望的那样得到我的清单。我希望得到一个包含每个“盒子”对象字典的 python 列表。
我被建议使用 'boxes[]' 作为 javascript 中的参数名称,所以我的帖子数据将是:
var postData = {
customer: 'test',
order: 1,
'boxes[]': [
{
"size":"2",
"color":"1",
"colorNumber":"1",
"barCode":"1234567890",
"barCodePic":"",
},
{
"size":"3",
"color":"1",
"colorNumber":"2",
"barCode":"0987654321",
"barCodePic":"",
}
]
}
Run Code Online (Sandbox Code Playgroud)
尝试时,输出为:
Customer: test
Order: 1
get - boxes: None
get - boxes[]: [object Object]
getlist - boxes[]: [u'[object Object]', u'[object Object]']
getlist - boxes: []
POST BELOW
<QueryDict: {u'customer': [u'test'], u'boxes[]': [u'[object Object]', u'[object Object]'], u'order': [u'1']}>
Run Code Online (Sandbox Code Playgroud)
您可以在 QueryDict 中看到它只是一个包含“[object Object”] 的 unicode 字符串列表。实际上没有对象数据。
小智 5
您需要先对 JavaScript 对象进行编码。这些不能直接通过 GET 或 POST 参数传递。
尝试在POST
使用 jQuery之前在 JavaScript 对象上调用 JSON.stringify() (即用 括起来的任意数据{ "size":"3", "color":"1" ... }
)。例如:
[
JSON.stringify({
"size":"2",
"color":"1",
"colorNumber":"1",
"barCode":"1234567890",
"barCodePic":"",
}),
JSON.stringify({
"size":"3",
"color":"1",
"colorNumber":"2",
"barCode":"0987654321",
"barCodePic":"",
})
]
Run Code Online (Sandbox Code Playgroud)
然后在 Python 中,使用类似的东西来解码它:
import json
box_0_string = request.POST.get('boxes[]')[0]
box_0_dict = json.loads(box_0_string)
Run Code Online (Sandbox Code Playgroud)
获取单个 JSON 对象。
归档时间: |
|
查看次数: |
1424 次 |
最近记录: |