Джанго: правильный путь для прохождения AJAX - PullRequest
0 голосов
/ 08 января 2019

У меня есть представление, которое получает параметры из внешнего интерфейса через AJAX.

Я передаю параметры AJAX, но на этот раз мой путь не сработал.

Я попросил друга о помощи, и он отправил мне другой способ отправки данных AJAX. На мой неподготовленный взгляд они оба работают одинаково. Поэтому я не знаю, почему мой не работает:

Почему?

AJAX моего друга:

<script>
     $("#id_shipping_province").change(function () {
        var val_d = $("#id_shipping_department").val()
        var val_p = $("#id_shipping_province").val()
        $.ajax({
            url: "/district/?d_name=" + val_d + "&p_name=" + val_p
              }).done(function (result) {
             $("#id_shipping_district").html(result);
              });
         });
 </script>

Мой AJAX :

<script>
      $("#id_shipping_province").change(function () {
         var val_d = $("#id_shipping_department").val()
         var val_p = $("#id_shipping_province").val()
         $.ajax({
              url: "/district/",
              d_name: val_d,
              p_name: val_p
          }).done(function (result) {
              $("#id_shipping_district").html(result);
           });
         });
       });
</script>

View

def get_district(request):
    d_name = request.GET.get("d_name")
    p_name = request.GET.get("p_name")
    data = Peru.objects.filter(departamento=d_name, provincia=p_name).values_list("distrito", flat=True)
    # data = Peru.objects.filter(provincia=p_name).values_list("provincia", flat=True)
    return render(request, "accounts/district_dropdown.html", {
        "districts": set(list(data))
})

1 Ответ

0 голосов
/ 09 января 2019

Вам необходимо передать свойства d_name и p_name в отдельный объект, заданный data. В настоящее время вы передаете их как свойства верхнего уровня объекта настроек ajax, которые не будут иметь никакого эффекта.

var val_d = $("#id_shipping_department").val()
var val_p = $("#id_shipping_province").val()
$.ajax({
    url: "/district/",
    data: {  // Pass parameters in separate object
        d_name: val_d,
        p_name: val_p
    },
}).done(function (result) {
    $("#id_shipping_district").html(result);
});

Объект data преобразуется в строку запроса и добавляется к URL-адресу.

В случае вашего друга они создают строку запроса вручную при создании URL - следовательно, их версия работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...