Ajax - выпадающий выбор отлично работает только в первый раз - PullRequest
0 голосов
/ 27 мая 2020

ну, я застрял с этим фрагментом кода, который отправляет данные json в файл php, в первый раз отлично работает (опубликуйте информацию в базе данных и все хорошо), но после первых подзаголовков выбранное значение раскрывающегося списка и обновляет БД со старым значением в var = name.

Вот код:

<script>
$("#rechazar").click(function(){    
        // Here I create a form called "rechazo" (reject in English) with just two buttons and a dropdown
        var rejectForms= $('<form id="formrechazo" name="formrechazo"><select id="dropdown_rechazo" name="dropdown_rechazo"  style="z-index:10000; width: 250px;" ><option value="" selected="selected">Seleccione un motivo de rechazo</option><option value="Vehicle Year">Año del vehículo</option><option value="Vehicle Model">Tipo de vehículo</option><option value="Vehicle Model">Taxi</option><option value="Age">La edad del Driver es menor a los 21 años</option><option value="Unsuitable Documents">Licencia no admitida</option><option value="Unsuitable Documents">Cedula no admitida</option><option value="Duplicate Record">Registro Duplicado</option></form>');
            rejectForms.dialog({    
            modal: true,   

// Здесь, после создания формы выше, я говорю, что всякий раз, когда нажимается кнопка ОК, она должна принимать выбранный вариант (который отлично работает только с в первый раз), но если я нажму «Отменить» или обновлю информацию, второй раз не будет принимать новое выбранное значение только предыдущее, а событие .change в конце больше не отображает предупреждение. Что я делаю не так?

            buttons: { 
                'OK': function () {     
                 var name =  $( "#dropdown_rechazo" ).find( "option:selected" ).prop("value");   
                 //this ID take it from a form on html with id= #myform var rejectID =  $('#ID').val();
                    debugger; var rejectdata = JSON.parse(JSON.stringify({value: rejectID, value2:name})); //The ajax call - works like a charm- 
                var ajax = $.ajax({
                type: "post",
                dataType: 'json',   
                 url: "http://localhost/reject.php",
                 //context: this,
                 data : ({jsonObj:rejectdata}),
                //contentType: 'application/json;charset=UTF-8',
                 success: function (result) {
//This is a function after I update the php to load info to some divs 
                siguientes();
                                            },
     error: function(result){
                            var json = (result);
                            alert(json.error);
                            }            
     })  
                    $(this).dialog('close');
                    rejectForms.reset;
                },
                    'Cancel': function () {
                    $(this).dialog('close');
                    rejectForms.reset;
                }
              }
            } 
        )           
        $("#dropdown_rechazo").change(function(){
    var name =  $( "#dropdown_rechazo" ).find( "option:selected" ).prop("value");   //$('#dropdown_rechazo').val();
    alert(name)                             
    })  })
</script>   

1 Ответ

0 голосов
/ 27 мая 2020

Решение заключалось в том, чтобы переместить набор 'div' из вызова ajax, например:

<div id="dialogoRechazo" title="Dialog Title"><select id="dropdown_rechazo" name="dropdown_rechazo"  style="z-index:10000; width: 250px;" ><option value="" selected="selected">Seleccione un motivo de rechazo</option><option value="Vehicle Year">Año del vehículo</option><option value="Vehicle Model1">Tipo de vehículo</option><option value="Vehicle Model">Taxi</option><option value="Age">La edad del Driver es menor a los 21 años</option><option value="Unsuitable Documents">Licencia no admitida</option><option value="Unsuitable Documents1">Cedula no admitida</option><option value="Duplicate Record">Registro Duplicado</option></div>

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

https://api.jqueryui.com/dialog/#option -appendTo

<script>
$("#rechazar").click(function(){    
$( "#dialogoRechazo" ).dialog({ autoOpen: false });
    // Dialog here
    $( "#dialogoRechazo" ).dialog( "open" );
    var rejectForms= $( "#dialogoRechazo" );
        rejectForms.dialog({    
        modal: true,

        buttons: {
            'OK': function () {     
                debugger;   let name =  $( "#dropdown_rechazo" ).find( "option:selected" ).prop("value");   //$('#dropdown_rechazo').val();
                    var rejectID =  $('#ID').val();
                debugger; var rejectdata = JSON.parse(JSON.stringify({value: rejectID, value2: name}));
            var ajax = $.ajax({
...