javascript - AJAX 调用后使用 django 变量填充下拉列表

标签 javascript django ajax dropdown

我有一个下拉菜单,当选择新值时会触发 AJAX 调用。 AJAX 脚本调用我的 Django View ,该 View 返回一个变量(值列表)。它似乎一直有效,直到我需要用该列表中的值填充第二个下拉列表的步骤。我不知道该怎么做。

这是我的 html 代码:

<form class="wrapper" action="" method="post"> {% csrf_token %} 

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

  <select id="dep" name="dep">  </select>


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

  </script>

</form>

这是我的views.py 文件:

@csrf_exempt
def MyView3(request):

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

        myVariable = json.dumps(["1", "2", "3", "4", "a"]) 


        return HttpResponse(myVariable , content_type='application/json')
    else:
        return render(request,'home3.html')

当我在下拉列表中选择一个新值时,它会触发 AJAX 调用,并且警报(结果)行返回“1,2,3,4,a”。所以这部分有效,但我不知道如何用这些值填充我的“dep”下拉列表。

我一直在尝试在脚本中插入以下代码,但没有产生任何结果:

    var select = document.getElementById("dep");
    var options = result
    for(var i = 0; i < options.length; i++) {
    var opt = options[i];
    var el = document.createElement("option");
    el.textContent = opt;
    el.value = opt;
    select.appendChild(el);

我不确定这段代码是否只是放错了地方,或者只是不适合使用。有谁知道我应该在这里做什么?谢谢

最佳答案

您可以在ajax请求的success属性中做到更简单:

        success: function(data) {
            var str = '';
            data.forEach(function(opt){
                str += '<option value="' + opt + '">' + opt + '</option>';
            });
            document.getElementById("dep").innerHTML = str;
        }

关于javascript - AJAX 调用后使用 django 变量填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60591584/

相关文章:

javascript - 你会如何排除这个未定义的方法

javascript - React 重新渲染后 Zurb Foundation 6 刷新

python - Django - 使用给定的 sql 转储来创建其他模型并填充数据

Django 运行服务器永久

php - 每次更新数据库时如何刷新一个div?

java - 是什么原因导致这个 ajax-upload javascript 错误?

javascript - 强制 javascript csv 格式字符串中的值成为文本

javascript - jQuery 通知插件点播功能不起作用

python - 如何在 Django 模型上存储字典?

php - datatables.net 列对另一列进行排序