jQuery select(live,change) 和 .ajax 仅触发一次

标签 jquery codeigniter-2

我有一个页面,其中包含 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/

相关文章:

php - 在 codeigniter 中提取日期和月份

php - 将变量从 javascript 函数传递到 codeigniter 中的 Controller 方法

java - spring中使用ajax过滤动态数据

javascript - 如何使用 CSS/JS 使等距网格在背景上居中

javascript - 如何创建 html 表格周 View ? (日历)

php - 在表单中发布非输入字段?

javascript - 加载 jQuery 之前运行的增强.js 库 onScriptLoaded

javascript - 服务器端按钮单击事件未在 UpdatePanel 内触发

php - 当我们知道sql中的大海捞针时,就需要寻找针

php - 创建一个 loadmore 按钮并在同一 codeigniter View 中显示下一组内容