Ajax函数调用不再工作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (29)

需要帮助来解决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调用不能在第二次下拉式更改事件中使用?

提问于
用户回答回答于

你需要将.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();
          } 
   });
}   

扫码关注云+社区

领取腾讯云代金券