[英]How to get JSON data from ajax request
我通过 ajax 从我的 html 将 JSON 传递回我的视图
ajax 内调用
team_ids = ['1']
//convert arrays into JSON
var teamidarrayToString = JSON.stringify(Object.assign({}, team_ids));
var teamarrayJSON = JSON.parse(teamidarrayToString);
var data = {
teamarrayJSON: teamarrayJSON,
'csrfmiddlewaretoken': '{{ csrf_token }}',
}
$.ajax({
type: "POST",
url: "/mypage/",
data: data,
success: function(data) {
我不确定如何在我的 views.py 中获取 teamarrayJSON
@login_required(login_url="/accounts/login/")
def my_view(request):
if request.is_ajax():
team_ids = request.POST.get("teamarrayJSON")
print(team_ids)
team_ids 的打印为无。 想不通为什么。 我打印了(request.POST),我可以看到数据。
<QueryDict: {'teamarrayJSON[0]': ['1'], 'csrfmiddlewaretoken': ['bZefleNuHLAa']}>
谢谢!
根据您的问题,打印 request.POST 的结果是这样的:
<QueryDict: {'teamarrayJSON[0]': ['1'], 'csrfmiddlewaretoken': ['bZefleNuHLAa']}>
在您的代码中,您正在尝试访问“teamarrayJSON”:
team_ids = request.POST.get("teamarrayJSON")
在 python 中,如果未找到键且未指定 value 参数,则 dictionary.get() 返回 None。 QueryDict 是一个类似于字典的 object,它具有与内置 dict 行为相同的 .get() 方法。 因此,您的代码正在获取 None ,因为您正在尝试访问不存在的密钥“teamarrayJSON”。 然而,存在的是关键teamarrayJSON[0]
。 所以如果你这样做,你应该得到你的数据:
team_ids = request.POST.get("teamarrayJSON[0]")
另外,我不完全确定您要在这两行中实现什么:
var teamidarrayToString = JSON.stringify(Object.assign({}, team_ids));
var teamarrayJSON = JSON.parse(teamidarrayToString);
You're using Object.assign()
to convert team_ids
array to JS object, then serializing it with JSON.stringify()
, then using JSON.parse()
to get a JS object again. 这两行是多余的,基本没用。 您可以在调用.ajax()
时将数组直接传递给data
,因为data
需要普通 Object 或字符串或数组,它会根据提供的设置自动序列化它。 查看Jquery.ajax() api 参考。
您的客户端 js 中似乎存在某种错误。 只需 Console.log 并验证 teamarrayJSON 并尝试以下操作:
teamarrayJSON = Object.assign({}, team_ids);
console.log(teamarrayJSON);
var data = {
data: teamarrayJSON,
'csrfmiddlewaretoken': '{{ csrf_token }}',
}
并从您的 django 视图的请求中检查 output。POST
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.