Проблема с выбором селектора раскрывающегося меню с помощью AJAX

#javascript #html #jquery #django #ajax

Вопрос:

В настоящее время я пытаюсь создать страницу, на которой моя база данных обновляется при сбросе события. Более конкретно, у меня есть страница с возможностями перетаскивания, что мне нужно, так это каждый раз, когда я перетаскиваю определенный div (карточку сделки) в другой div (столбец этапа), мне нужно обновить базу данных, которая представляет эту «сделку», размещенную на другом «этапе».

Для этого проекта моим бэкэндом является Django, и до этого момента я мог успешно изменять основные поля символов при выпадающем событии, хотя выбор селектора в раскрывающемся меню поставил меня в тупик.

На данный момент я просто произвольно выбрал «значение» = 3 для целевого селектора, просто чтобы посмотреть, смогу ли я заставить его работать. К сожалению, что бы я ни пытался, я всегда получаю приглашение «Это поле обязательно». Я прикрепил фотографию, показывающую это ниже.

Любая помощь будет очень признательна!

КОД AJAX

 $(document).one('drop', function(ev){
            ev.preventDefault();

            var stage_title_path = '#'   el.id   " .stage-title";
            var stage_title = $(stage_title_path).html();
            
            $.ajax({
                type:'POST',
                url:deal_card_url,
                data:{
                    deal_owner: 'Sally Sue',
                    deal_address: '745 Amen Street',
                    deal_arv: '222',
                    deal_repair: '333',
                    
                    csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),
                },
                success:function(){
                    $("#id_stage").val("3").change();
                }
            });

        });
        
 

РАСКРЫВАЮЩИЙСЯ HTML-КОД ФОРМЫ

 <p><label for="id_stage">Stage:</label> <select name="stage" required="" id="id_stage">
  <option value="">---------</option>

  <option value="1" selected="">New</option>

  <option value="2">Sent Offer</option>

  <option value="3">Under Contract</option>

  <option value="4">Option</option>

  <option value="5">Closed</option>

  <option value="24">New Lead</option>

</select></p>
 

Веб-страница Обновления Обновленной сделки Ajax:

Комментарии:

1. эта строка должна быть «вкл.» вместо «один» $(document).one(' , то есть сообщение «требуется поле» не связано с Ajax. Чтобы проверить, запускается ли Ajax, вы можете использовать console.log('ajax triggered'); или аналогичное сообщение.

2. Спасибо за комментарий, Алекс. Причина, по которой я использую «один» вместо «вкл.», заключается в том, что с помощью «вкл.» он выводил предыдущие события сброса вместе с самым последним. Использование «одного» сделало так, что предыдущие события сброса не рассматривались. Что касается «требуемого поля», я знаю, что в нем явно не указано, был ли запущен Ajax. «Аякс» явно бежал, когда чарфилды изменились. Я указал на поле, необходимое только для того, чтобы показать, что мой код для выбора селектора не работает, в то время как все остальное работает. Надеюсь, это немного прояснит мой вопрос.

Ответ №1:

Понял это. На самом деле это было довольно просто…

Для настройки «данные» в функции ajax мне нужно было указать «значение» нужного селектора (он же этап), как показано в приведенном ниже коде.

 data:{
     deal_owner: 'Sally Sue',
     deal_address: '745 Amen Street',
     deal_arv: '222',
     deal_repair: '333',
     stage: "2",
 

В этом случае прохождение этапа «значение», равное «2», как видно из html, соответствует опции «Отправленное предложение» в раскрывающемся меню. Ранее я пытался использовать фактическое имя селектора (например. Отправленное предложение).