Вызов функции Ajax не работает во второй раз - PullRequest
0 голосов
/ 02 июня 2018

Нужна помощь для решения проблемы вызова ajax На моей странице просмотра (работающей над codeigniter) есть раскрывающийся список и раздел div.В зависимости от выпадающего значения данные будут изменены в разделе div.Я использую ajax-вызов (для вызова метода в контроллере), чтобы загрузить данные в тег div при событии изменения выпадающего списка.Вызов Ajax работает нормально при первом событии изменения в раскрывающемся списке, но когда я выбираю значение во второй раз в раскрывающемся списке, вызов функции ajax не работает (второй выбор и т. Д.).
Мой код: VIEW PAGE =>

 $(document).ready(function() {  
 $("body").on('change','#assettype_id',function(e){  // "assettype_id" is 
                                                       dropdown id
  //e.preventDefault();   
   var categoryval = $('#assettype_id :selected').val();                         
   $.ajax({   
              type: 'POST',  
              cache: false,  
              url: 'http://my_path/index.php/assetcontroller/assignpc/'+ categoryval,  // Based on "categoryval" data will change in div tag  
              dataType: 'html',  
              success: function(data) {  
              $( "#result" ).load( "http://my_path/index.php/assetcontroller/assignpc/"+ categoryval);  // "result" is div tag id  
              $( "#result" ).html(categoryval);   
 },  
});  
    return false;  
  });  
 }); 

Почему ajax-вызов не работает в выпадающем списке событий второго изменения?

1 Ответ

0 голосов
/ 03 июня 2018

Вам нужно обернуть событие .on('change') в функцию, чтобы его можно было вызвать в любое время позже.

Это потому, что, как только вы добавили новый вывод html через Ajax, этот html еще не знает оваше событие изменения!

Так что функцию my_change_event() необходимо повторно вызвать, как только ваш выход Ajax был добавлен в DOM с вашим $( "#result" ).load()

примерно так:

$(document).ready(function() { 
   my_change_event();        
});

function my_change_event(){
   $( "#assettype_id" ).on( "change", function() { 
       $.ajax({   
          type: 'POST',  
          cache: false,  
          url: your_url,  
          success: function(data) {  
              // do something with data
              // html output
              my_change_event();
          } 
   });
}   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...