我有一个列表(例如[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]]];
我将这个结果复制到一个验证器中,它声明它是正确的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)
根据这个帖子,我需要用json.loads()在python中解码变量,但是它说没有要解码的JSON对象。基于Python中的示例,我不知道为什么不工作。
发布于 2014-08-13 15:56:35
我认为问题在于,它将整个resultMsgList看作一个字符串,结果中存在u‘xxxxx’这一事实证实了这一点。这就是为什么索引超出了范围,因为当二维数组仍然是字符串时,您试图访问它。您必须使用json.loads将其转换为字符串数组。
发布于 2014-08-14 09:38:56
在javascript中,尝试传递
var data = {'resultMsgListJson':resultMsgList};
而不是
var data = {'resultMsgListJson': resultMsgListJson};
resultMsgListJson
不是在那时定义的javascript变量,它可能会被计算为undefined
。
通常,在python中,在尝试对resultMsgListContext
执行json.loads之前,要打印它的内容,这样您就可以准确地看到要解析的内容。
https://stackoverflow.com/questions/25292776
复制