我有一个页面,其中包含 52 个下拉菜单,其类别为 RegionalSelect。
我已经绑定(bind)了change事件来触发ajax运行到 Controller 以保存到数据库,成功回调函数是刷新页面。
刷新后,该功能不再起作用。
我将此代码放置在我的文档中
$("select.regionalSelect").live('change', function(){
var sel = $(this).val();
var id = $(this).parent().parent().find("td[name=propNumber]").html();
$.ajax({
url:"<?php echo site_url('conn/reassignRegional'); ?>",
type: 'POST',
data:{ id: id, regional: sel },
success: function(msg){
var link = "<?php echo site_url('conn/PropertiesAndRegions'); ?>";
window.location.href=link;
} // end success
}); // end ajax
}); // end change
Controller 仅获取发布的值并将其插入数据库。当页面刷新时,列表是正确的,但无法进行其他更改。
由于我列出了我们的酒店及其当前区域总监的列表,以及随着区域重新分配而改变的机制,因此持续提供编辑功能是必要的。
我已经盯着这个问题有一段时间了,而且我并不是一个经验丰富的编码员,所以我决定寻求新的眼光。
非常感谢所有帮助!
谢谢, 乔恩
最佳答案
您需要使用.live()
吗?如果您的选择元素在加载后没有动态添加到页面中,则没有必要。相反,您也许可以使用
$('select.regionalSelect').change(function() {
...
});
相反,它的行为基本相同,但目的不同。
此外,使用 JS 重定向时,您应该将链接分配给 window.location.href
,而不仅仅是 window.location
。并确保您的 AJAX 请求不会被缓存(POST 不应该被缓存,但您永远不知道)。
要全局禁用 jQuery 缓存,您可以执行以下操作:
$.ajaxSetup({
cache: false
});
关于jQuery select(live,change) 和 .ajax 仅触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7668675/