【发布时间】:2015-11-06 06:41:24
【问题描述】:
我通过 ajax 将浮点值的二维数组传递给我的 views.py。我的 ajax 调用如下所示:
$.ajax({
method: "POST",
url: "introURL",
data: {
csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
dsg_mtx : JSON.stringify(dsg_mtx),
},
success: function(data) {
document.getElementById("test").innerHTML = data; // echo response
},
error: function() {
alert ("Something went wrong");
}
我通过这个调用将我的数据拉到视图中:
def introURL(request):
if request.is_ajax():
try:
designMtx = json.loads(request.POST['dsg_mtx'], parse_float=None)
except KeyError:
return HttpResponse('Error, intro import')
... Some transformation of designMtx...
return HttpResponse(response)
else:
raise Http404
所以我的问题是如何将此 json 字符串化对象转换回可用于计算响应的二维数组?如您所见,我尝试使用 parse_float 选项,但它仍然是 str 数据类型。
传递的数组 dsg_mtx 是使用 Handson 表创建的,如下所示:
-1 -1
-1 1
1 -1
1 1
感谢您的指导。
【问题讨论】:
-
请出示
dsg_mtx -
在我上面的代码中添加了 dsg_mtx 的图形表示。
-
在
$.ajax之前添加console.log(dsg_mtx)并显示控制台中的内容。在json.loads之前的Python代码中以同样的方式添加print request.POST['dsg_mtx']并显示输出中的内容。 -
我想我看到了这个问题......我的 Handson 表是作为二维数字数组启动的,但是只要我在单元格中键入任何内容,它就会将该单元格中的值转换为字符串。所以我得看看为什么 Handson 表会这样。