我正在构建一个Django应用程序。
我需要构建一个非常简单的JS对象,如下所示:
data = {0: {t1: v("#t1"), p1: v("#p1")},
1: {t2: v("#t2"), p2: v("#p2")},
2: {t3: v("#t3"), p3: v("#p3")},
3: {t4: v("#t4"), p4: v("#p4")},
4: {t5: v("#t5"), p5: v("#p5")},
5: {t6: v("#t6"), p6: v("#p6")},
6: {t7: v("#t6"), p7: v("#p6")},
7: {t8: v("#t8"), p8: v("#p8")},
numTickers: 8
};
仅供参考,v()只是一个在其他语言中是一个宏的函数......它所做的就是减少输入以从标签中获取值。它工作,所以这不是问题:在控制台上,我有正确的JS对象与正确嵌套的正确键/值对。
在AJAX之前我做了一个:
var xmitData = JSON.stringify(data);
因为这让我最接近。 我的AJAX调用(现在)看起来像这样:
$.ajax({
type : 'POST',
headers: {'X-CSRFToken': '{{ csrf_token }}'},
data: xmitData,
url: 'ajax/data',
dataType : 'json',
success : function(data) {
然而,在Django处理这个问题之后,我在Python中得到的是一个看起来很像的querydict:
<QueryDict: {'{"0":{"t1":"1","p1":"100"},"1":{"t2":"","p2":""},"2":{"t3":"","p3":""},"3":{"t4":"","p4":""},"4":{"t5":"","p5":""},"5":{"t6":"","p6":""},"6":{"t7":"","p7":""},"7":{"t8":"","p8":""},"numTickers":8}': ['']}>
对我而言,这表示JS / JQuery使用所有多级键/值对作为一个大键,值为[&#39;&#39;](注意单引号)。
我已经尝试过stringify,$ .params,以及在Python端解包的各种方法。奇怪的是,这种表示完全正确,但仅限于querydict的单引号。解决这个问题的一种黑客方法是提取单引号之间的内容并从那里开始,但这可以&#39 ;是对的。
有什么想法吗?