Ajax函数调用第二次无效

时间:2018-06-02 11:59:37

标签: ajax codeigniter

需要帮助解决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 :(得分:0)

您需要将.on('change')事件包装到一个函数中,以便以后随时调用它。

那是因为一旦你通过Ajax添加了新的html输出,这个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();
          } 
   });
}