内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
需要帮助来解决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();
}
});
}