#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>
Комментарии:
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, соответствует опции «Отправленное предложение» в раскрывающемся меню. Ранее я пытался использовать фактическое имя селектора (например. Отправленное предложение).