【发布时间】:2016-10-08 11:28:20
【问题描述】:
我正在开发一个在 Django 上运行的网站。 我需要使用 Ajax 将数据从 Javascript 传递到我的 Python 代码。
这是我的代码:
// Javascript file
function myFunc() {
{...} // Generate var 'values' which is a dict of dict {{},{}...}
console.log(JSON.stringify(values));
$.ajax({
url : "holt/",
type : "POST",
data : values,
success : function (json) {
console.log(json)
},
error : function () {
alert("Error Ajax");
}
})
}
我在 python 中的看法:
class getHolt(TemplateView):
def get(self, request, *args, **kwargd):
pass
def post(self, request, *args, **kwargd):
if request.user.is_authenticated():
data = dict(request.POST)
h = Holt(data)
response_data, success = h.get_holt(2021, no_freeze=True)
return HttpResponse(
json.dumps(response_data),
content_type="application/json"
)
但是当我运行它时,使用:
Javascript 值
values= {
"1":{"data_2013":"49105","data_2014":"92620","data_2015":"30000","data_2016":"1945000"},
"2":{"data_2013":"2885906","data_2014":"2876120","data_2015":"2882653","data_2016":"2787520"},
"3":{"data_2013":"29201124","data_2014":"29470635","data_2015":"29383195","data_2016":"30154361"}}
我在我的 Python 代码中收到了这个:
print request.POST
print dict(request.POST)
{u'1[data_2014]': [u'92620'], u'1[data_2015]': [u'30000'], u'3[data_2013]': [u'29201124'], u'3[data_2014]': [u'29470635'],...}
为什么我没有像我发送的那样收到 dict 的 dict ?
Ajax 在“发送”数据之前对数据做了什么?
谢谢
JS 字典
console.log(JSON.stringify(values));
{"1":{"data_2013":"49105","data_2014":"92620","data_2015":"30000","data_2016":"1945000"},"2":{"data_2013":"2885906","data_2014":"2876120","data_2015":"2882653","data_2016":"2787520"},"3":{"data_2013":"29201124","data_2014":"29470635","data_2015":"29383195","data_2016":"30154361"}}
【问题讨论】:
-
你真的得到与你的 javascript 发送的不同的值吗?.. Django 的请求帖子是一个包含这些值的查询字典。它不包含原始帖子数据,您可能会在
request.body中找到它,尽管您最好学习如何使用帖子数据 -
您好,感谢您的帮助。是的,我不知道 request.POST 是这样工作的。但是我在正文中找到了值,但格式类似于上面:1 [data_xxx] = 1234。也许我这样做完全错了?
-
那么你为什么不在javascript中显示你的字典呢?
标签: javascript jquery python ajax django