【问题标题】:Django: How to retrieve in an AJAX POST request the value of two different variables?Django:如何在 AJAX POST 请求中检索两个不同变量的值?
【发布时间】:2020-03-09 21:22:16
【问题描述】:

我正在尝试将来自两个不同下拉列表的两个值发送到我的 Django 视图,但它不起作用。只有第一个下拉值被发送到视图。

假设我有以下观点:

def MyView(request):

    if request.method == 'POST' and request.is_ajax:

        result_1 = request.POST.get('d1')
        print(result_1)
        result_2 = request.POST.get('d2')
        print(result_2) 

这是html代码:

<script type="text/javascript">
  function dropdownChange () {
    var selectedRegion = $(".toChange option:selected").val();
    $.ajax({
            url: '/myApp/templates/',
            type: 'POST',
            data: {'d1': selectedRegion},
            }
    }); 
}
$(".toChange").change(dropdownChange);
</script>

  <select name="d1" class="toChange">
    <option val="1"> 1 </option>
    <option val="2"> 2 </option> 
  </select>

 <select name="d2">
    <option val="3"> 3 </option>
    <option val="4"> 4 </option> 
  </select>

当下拉列表 d1 面临更改时,我希望将 d1 和 d2 值都发送到我的视图。 d1 的值被正确捕获,但 d2(因此 result_2)显示“[]”。如何捕获这两个变量?

【问题讨论】:

    标签: javascript jquery django ajax


    【解决方案1】:

    只需将其添加到数据变量中:

    var selectedRegion = $(".toChange option:selected").val();
    var selectedRegion2 = $("select[name=d2] option:selected").val();
    $.ajax({
        url: '/myApp/templates/',
        type: 'POST',
        data: {'d1': selectedRegion, 'd2': selectedRegion2},           
    }); 
    

    【讨论】:

    • 不幸的是 print(result_2) 仍然返回一个空列表。知道可能出了什么问题吗?
    • 您在第二个选择框中选择了任何值吗?
    • 好的,它现在似乎可以工作了,尽管它并不完全符合我的预期,因为在我的代码中,下拉列表 1 的更改会更改下拉列表 2,但它是 d2 的旧值发送到我的观点,不是新的。还是谢谢!
    • 太棒了!您可以针对该案例发布一个单独的问题。我没有在这个问题中看到代码
    • 是的,我会先调查一下,如果我遇到困难,我会发布一个新问题。谢谢!
    猜你喜欢
    • 2019-05-11
    • 1970-01-01
    • 2019-06-09
    • 2017-06-23
    • 2012-07-30
    • 2019-02-18
    • 2014-05-09
    • 2011-10-25
    • 2013-11-09
    相关资源
    最近更新 更多