jQuery select (live, change) и .ajax только один раз - PullRequest
2 голосов
/ 06 октября 2011

У меня есть страница, которая имеет 52 раскрывающихся меню с классом RegionalSelect.

Я связал событие изменения, чтобы запустить ajax-запуск на контроллере для сохранения в базе данных и функции обратного вызова successявляется обновление страницы.

После обновления, функциональность больше не работает.

Я размещаю этот код готов мой документ

 $("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

Контроллер просто принимаетпубликует значения и вставляет их в базу данных.Когда страница обновляется, список корректен, но дополнительные изменения не могут быть внесены.

Поскольку я представляю список наших свойств и их нынешних региональных директоров, а также механизм, изменяющийся по мере переназначения регионалов, продолжениеналичие возможности редактирования является необходимостью.

Я давно на это смотрю, и я не настолько опытен в программировании, как я, поэтому я решил попросить о новых взглядах.

Вся помощьс благодарностью!

Спасибо, Джон

1 Ответ

3 голосов
/ 06 октября 2011

Вам нужно использовать .live()?Если выбранные вами элементы не добавляются динамически на страницу после ее загрузки, то в этом нет необходимости.Вместо этого вы можете использовать

$('select.regionalSelect').change(function() {
    ...
});

вместо этого, который имеет в основном то же поведение, но другое назначение.

Кроме того, при перенаправлении с помощью JS вы должны назначить ссылку на window.location.href вместо window.location.И убедитесь, что ваши AJAX-запросы не кэшируются (POST не должны быть, но вы никогда не узнаете).

Чтобы отключить кеш глобально для jQuery, вы можете сделать это:

$.ajaxSetup({
    cache: false
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...