Как вызвать javascript функцию внутри ajax успеха? - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу активировать кнопку обновления после нажатия кнопки подтверждения, а также когда значения данных действительны. Когда значения данных действительны, кнопки обновления функционируют.

Это код html для кнопок внутри модального

<div class="modal-footer">
        <button type="button" class="btn btn-primary validatebtn" id="btn_validate" onclick="activateupdate()">Validate</button>
        <button type="button" class="btn btn-primary causeUpdatebtn" id="btn_update" disabled="disabled">Update</button>

Вот код AJAX. Я извлекаю значения из модальных. Это дает вывод как действительный, но кнопка обновления все еще не активирована.

Какие изменения я должен сделать, чтобы функция activupdate () вызывалась

$(document).ready(function () {
   activateupdate();

})

$(document).on('click','.validatebtn', function(){
   let ValidId = $('#span_id').text();
   let ValidDesc = $('#Desc').val();

   let causeObj = new Object();
   causeObj.causeId = ValidId;
   causeObj.causeDescription = ValidDesc;

   let ValidFinalObj = new Object();

   $.ajax({
       type: 'POST',
       url: 'https://.../validate_apicall',  (taking an example)
       contentType: 'application/json',
       data: JSON.stringify(ValidFinalObj),
       success: function (data) {
           if(data.indexOf('Failed') > -1){
               pwIsf.alert({msg:'Not valid',type:'error'});   
           }
           else {
               pwIsf.alert({msg:'Valid',type:'info'}); 

               activateupdate()
               {
                   document.getElementById('btn_update').removeAttribute('disabled')
               } 
           }
       },
       error: function (xhr, status, statusText) {            
           console.log("Failed to Validate");
       }
   })   
}
); 

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Проблема в том, что вы поместили лог c, который включает кнопку в (синтаксически некорректную) функцию, которую вы никогда не вызываете. Из описания того, чего вы хотите добиться, вам просто нужно удалить этот блок.

Сначала удалите атрибут onclick из HTML. Это плохая практика, и в любом случае она здесь не нужна.

<div class="modal-footer">
  <button type="button" class="btn btn-primary validatebtn" id="btn_validate">Validate</button>
  <button type="button" class="btn btn-primary causeUpdatebtn" id="btn_update" disabled="disabled">Update</button>

Затем удалите блокирующий блок из функции обработчика success:

success: function(data) {
  if (data.indexOf('Failed') > -1) {
    pwIsf.alert({
      msg: 'Not valid',
      type: 'error'
    });
  } else {
    pwIsf.alert({
      msg: 'Valid',
      type: 'info'
    });

    $('#btn_update').prop('disabled', false)
  }
},
1 голос
/ 13 февраля 2020

Почему вы используете синтаксис функции внутри вашего кода ?! Просто измените свой код на этот

$(document).ready(function () {
   activateupdate();

})

$(document).on('click','.validatebtn', function(){
   let ValidId = $('#span_id').text();
   let ValidDesc = $('#Desc').val();

   let causeObj = new Object();
   causeObj.causeId = ValidId;
   causeObj.causeDescription = ValidDesc;

   let ValidFinalObj = new Object();

   $.ajax({
       type: 'POST',
       url: 'https://.../validate_apicall',  (taking an example)
       contentType: 'application/json',
       data: JSON.stringify(ValidFinalObj),
       success: function (data) {
           if(data.indexOf('Failed') > -1){
               pwIsf.alert({msg:'Not valid',type:'error'});   
           }
           else {
               pwIsf.alert({msg:'Valid',type:'info'}); 

               document.getElementById('btn_update').removeAttribute('disabled') // <- HERE
           }
       },
       error: function (xhr, status, statusText) {            
           console.log("Failed to Validate");
       }
   })   
}
); 
...