как отправить ajax запрос с помощью события onclick без вложенных тегов формы в django - PullRequest
0 голосов
/ 24 февраля 2020

это изображение, которое я хочу сделать на самом деле у меня есть содержимое div, я применил событие onclick к этому div, когда пользователь нажимает на этот div, текст между этими тегами должен быть отправлен на сервер, а затем отображение в таблице также. я сделал что-то, что подсказало мне, где на самом деле ошибка, потому что $.ajax не работает, это вызывает ошибку

например: $. ajax не является функцией

игроков. html

                         <div class="selectize-control single">
                         <div class="selectize-input items has-options not-full">
                         <input type="text" autocomplete="off" tabindex="" 
                    id="select_player" style="width: 146.75px; opacity: 1; position: 
                         relative; left: 0px;" placeholder="Adauga jucator la echipa">
                         </div>

                         <div class="selectize-dropdown single liststyle" id="listitems" 
                      style="display: None; width: 987px; top: 29px; left: 0px; visibility: 
                        visible;">

                             <div class="selectize-dropdown-content">
                                     {% block listplayers %}
                                          {% if player is not None %}
                                              {% for p in player %}
                                 <div class="option selected curserstyle sp" id="{{p.id}}" data-selectable="" data-value="{{p.YourName}}">{{p.YourName}}1</div>
                                 <div class="option selected curserstyle sp" id="49" data-selectable="" data-value="{{p.YourName}}">{{p.YourName}}2</div>

                                 {% endfor %}
                                          {% else %}
                                 <div class="text-center">
                                              List is Empty
                                 </div>
                                          {% endif %}
                                 {% endblock %}
                     </div>
                     </div>
                     </div>

javascript

                 $("#listitems").on('click',function(e){

    // preventing from page reload and default actions
    e.preventDefault();
    // serialize the data for sending the form data.
    var serializedData = $(this).serialize();
    // make POST ajax call

    $.ajax({
    type:'get',
    url:"/templates/dashboard/players",
    data:serializedData,
    success:function(responce){

                            // on successfull creating object
                            // 1. clear the form.

                            $("#listitems").trigger('reset');

                            // 2. focus to nickname input

                            $(".sp").focus();
                            // display the newly friend to table.
                            var instance = JSON.parse(response["instance"]);
                            var fields = instance[0]["fields"];
                             var x = document.getElementById(user_id).textContent;


                            $("#playername").append('<div class="row list-row player-row " id="targetdel'+i+'"><div class="col-md-6 title"><a id="playername" href="#">'+x+'</a></div><div class="col-md-2 company text-center has-checkbox"><label class="green checkbox-box"><input type="checkbox" class="checkbox_entity checkbox_captain" id="captain"  data-entity_id="17270" data-entity_type="captain" data-url_ajax="update_team_player"><span class="checkmark"></span></label></div> <div class="col-md-2 company text-center has-checkbox"> <label class="green checkbox-box "><input type="checkbox" class=" checkbox_entity checkbox_observer " id="cd_btn" data-entity_id="'+i+'" data-entity_type="observer" data-url_ajax="update_team_player style="background-color:black;" "> <span class="checkmark"></span> </label></div><div class="col-md-2 actions company text-right"><a href="" class="remove_entity_data" data-entity_id="17270" data-entity_type="team_player" > </a><button id = "'+i+'" class="btn del" style="text-transform: none;background-color: #ed143d00;padding: 0px 9px;border: none;color: #a2a2a2;">x</button></div></div>');
                            i++;
                },
                    error: function (response) {
                    // alert the error if any error occured
                    alert("this one is error");
                    alert(response["responseJSON"]["error"]);
                    },
    })


    })

1 Ответ

0 голосов
/ 24 февраля 2020

Кроме того, что вы используете response в success из ajax, когда у вас есть function(responce), вы можете использовать тонкую сборку Jquery.

Вы должны убедиться, что вы вы используете полную версию Jquery, так как в сборке slim по какой-то причине ajax не включено.

Простой способ проверить это go там, где вы определили свои сценарии и посмотрите, есть ли в вашем скрипте slim.

Это, я полагаю, последняя полная версия jquery. Это то, что вы должны иметь.

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>

не это

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>

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