我正在尝试通过AJAX POST将Javascript数组发送到django视图。
我使用JSON.stringify:
将此数组存储在隐藏输入中$('#id_uuids').val(JSON.stringify(arr));
这是我尝试发送它的方式:
$.post("/ajax/generateGallery",{uuids: $('#id_uuids').val()},function(response){
resp = JSON.parse(response);
alert(resp.html);
},"json");
浏览器控制台显示正在发送的数据如下所示:
uuids:["6ecbe35b-0b77-4810-aa9a-918fecaeef13","e41f52f7-721b-4d44-b7d6-bbb275182d66"]
但是,我无法在我的django视图中使用它。我试过了:
uuids = request.POST.getlist('uuids')
logger.info(uuids)
logger.info(type(uuids))
返回:
[08/Aug/2014 15:20:00] INFO [app.rest_client:307] [u'["89a26646-6000-4c48-804a-69abcc496fd8"]']
[08/Aug/2014 15:20:00] INFO [app.rest_client:308] <type 'list'>
[08/Aug/2014 15:20:00] INFO [app.rest_client:312] Generate HTML gallery for photo ["89a26646-6000-4c48-804a-69abcc496fd8"]
因此,Django将列表发送为单个元素。如何强制python代码将此数据视为列表并能够迭代?
答案 0 :(得分:1)
尝试对发布的数据进行JSON解码
uuids = json.loads(request.POST.get('uuids'))
如果您之前加载了一些json模块,例如
import simplejson as json