我有一个列表(例如[[1,2],[3,4]])从Django视图传递到javascript变量并使用jQuery提交。我需要解析该变量来拉取索引。基本过程是:
添加为上下文变量(python):
resultMsgList.append(msg)
resultMsgListJson=json.dumps(resultMsgList)
resultDict['resultMsgListJson']= resultMsgListJson
Javascript:
var resultMsgList = {{resultMsgListJson}};
var data = {'resultMsgList':resultMsgList};
$.post(URL, data, function(result){
});
Google控制台告诉我:
使用Javascript:
var resultMsgList = [["View \"S03_2005_LUZ_140814_105049_with_geom\" was successfully created!", "luz_mapfile_scen_tdm_140814_105049", "S03_2005_LUZ_140814_105049_with_geom", "C:/djangoProjects/web_output/mapfiles/ATLANTA/luz_mapfile_scen_tdm_140814_105049.map", [25, 50, 498.26708421479, 131137.057816715]]];
我将此结果复制到validator,表明它是正确的JSON。
帖子给了我:
resultMsgList[0][]:View "S03_2005_LUZ_140814_105049_with_geom" was successfully created!
resultMsgList[0][]:luz_mapfile_scen_tdm_140814_105049
resultMsgList[0][]:S03_2005_LUZ_140814_105049_with_geom
resultMsgList[0][]:C:/djangoProjects/web_output/mapfiles/ATLANTA/luz_mapfile_scen_tdm_140814_105049.map
resultMsgList[0][4][]:25
resultMsgList[0][4][]:50
resultMsgList[0][4][]:498.26708421479
resultMsgList[0][4][]:131137.057816715
我需要从这个列表中获取元素。我目前有(python):
resultMsgListContext = request.POST.get('resultMsgListJson','')
resultMsgListContext = json.loads(resultMsgListContext)
oldMapfileName=resultMsgListContext[0][2] (+ a number of similar statements)
根据这个post我需要用json.loads()来解码python中的变量,但它说没有要解码的JSON对象。根据Python文档中的examples,我不确定为什么这不起作用。
答案 0 :(得分:0)
我认为问题在于它将整个resultMsgList视为一个字符串,这可以通过结果中存在u'xxxxx'的事实来证实。这就是为什么它说索引超出范围,因为当它仍然是一个字符串时你试图访问一个2D数组。您必须使用json.loads将其转换为字符串数组。
答案 1 :(得分:0)
在javascript中,尝试传递
var data = {'resultMsgListJson':resultMsgList};
而不是
var data = {'resultMsgListJson': resultMsgListJson};
resultMsgListJson
不是在此时定义的javascript变量,可能会被评估为undefined
。
通常,在python中,在尝试对其执行json.loads之前打印resultMsgListContext
的内容,以便您可以准确地看到您尝试解析的内容。