javascript - 发布的 Ajax 发送的数据似乎没有出现在 Django View 中

标签 javascript jquery ajax django django-views

我正在使用 AJAX 调用某个 url,传入键/值对数据。

$.ajax({

              url: 'http://127.0.0.1:8000/tool/page4/add_team/' + String(str) + '/',
              type: 'POST',
              dataType: 'html',
              data: { 
                      'alerts_array' : data_array,
                      //'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
                    },
              async: false,
              success: function(data){
                  $('#target').html(data);
              },
              error: function(XMLHttpRequest, textStatus, errorThrown) { 
                  alert("Status: " + textStatus); alert("Error: " + errorThrown); 
              }       
        });

这是我 View 中的函数,它正在调用:

@csrf_exempt
def displayAlerts(request, team):

t = (team, )
iterator = itertools.count()

query = "SELECT * FROM tool_alert_template WHERE team = ?"

all_alert = All_alerts.objects.all()

#a = "SELECT * FROM tool_sys_team WHERE sys_team "
new_list = []

for b in Alert_template.objects.raw(query, t):
    new_list = b.convertAlert

if not new_list: #if new_list is still undefined because Sys_team.objects.raw returns nothing,
                     #then initialize it as unknown
    new_list = ["Unknown","Unknown","Unknown"]

if request.method == 'POST':
    new_list = []
    default = ["Unknown","Unknown","Unknown"]
    temp = request.POST.get('alerts_array', default)
    #new_list = request.POST['alerts_array']
    for a in temp:
        new_list.append(a)

return render_to_response('table_alerts.html',
                {'alerts_array' : new_list, 'team_name' : team, 'iterator':iterator, 'all_array':all_alert } 
                )

作为前言,当我加载页面时,在发送 AJAX 请求之前,我有另一个 Ajax 请求(未显示),该请求使用我的 All_alerts 和 Alert_template 对象的表加载页面。仅当用户从表中选择一个选项时,才会调用上面的 Ajax 请求。因为我不希望发生这种情况时刷新页面,所以我为两个 Ajax 请求调用相同的函数,并且只是重新呈现该 HTML block 。不幸的是,在我看来,当我调用 temp = request.POST.get('alerts_array',default) 时,它似乎找不到alerts_array,因为默认值一直显示在这一页。我可能可以在客户端完成所有这些工作,但我觉得我已经非常接近解决这个问题了。任何帮助表示赞赏!非常感谢。

最佳答案

心情很郁闷。我所要做的就是:

new_list = request.POST.getlist("alerts_array[]", None)

如果您通过 ajax 传递列表,则可以通过 getlist 和 key[] 访问该数组

关于javascript - 发布的 Ajax 发送的数据似乎没有出现在 Django View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316577/

相关文章:

php - history.pushState 导航 - 元标签怎么样 - 单独的模板?

javascript - () 的 knockout.js 指南

javascript - 获取元素的索引作为子元素相对于父元素

javascript - 尝试根据用户输入显示数组中的元素

jQuery:如何选择我 parent 的所有 P child ?

javascript - jQuery 函数永远不会在 .ready() 上执行

javascript - 如何让 document.write 和 ajax 发挥良好作用?

javascript - 检查使用 AJAX 添加的 JSON 中是否已存在值

javascript - 使用 Javascript 打开空白 URL 时遇到问题

javascript - 从 ASPX 后面的代码中显示/隐藏 div