Функция Ajax, живой вызов? - PullRequest
0 голосов
/ 15 июня 2011

В боковой панели у меня есть маленькая ячейка, заполненная ajax. У меня есть 2 функции ajax: один добавляет элементы в список, а второй удаляет их, если пользователь нажимает кнопку удаления. Мой HTML-это простой неупорядоченный список, например, так:

<ul id="listaruta" class="lista">
      <li>Item</li>
      <li>Item</li>
</ul>

Каждый раз, когда я вызываю любую из двух функций, они заменяют список ul на обновленный (выбор элементов из базы данных после вставки или удаления). Они работают нормально, пока я не хочу удалить сразу после того, как я вставил элемент в список.

Моя функция Ajax для вставки (другая очень похожа):

var valor=$("#alcrearuta").attr('class');
$("#alcrearuta").click(function(){
    $.ajax({
        type: "GET",
        url: "../ajax/ruta.php",
        data: "url=" + valor,
        dataType: 'html',
        success: function(data) {
            $("#listaruta").html(data);
        }
    });        
});

Мой файл ruta.php дает мне другой список ul с той же структурой, что и у оригинала, только с обновленными элементами.

Насколько я понимаю, поскольку я обновляю ul с помощью моей функции ajax, другая функция не знает, что список обновлен, она только «запоминает» старый список, поэтому ничего не делает. Если я обновлю страницу, она будет удалена без проблем. Я предполагаю, что это будет решено с помощью live ()? Но я понятия не имею ...

РЕДАКТИРОВАТЬ: Хорошо, теперь я могу заставить свой вызов ajax работать, за исключением того, что когда я удаляю сразу после обновления значение, которое я передаю в файл ruta.php (переменная, которая поможет мне найти поле Мне нужно удалить из базы данных) будет установлено значение 'undefined', что даст мне запрос примерно так: Выберите id из poi, где url = 'undefined'

Опять же, если я перезагрузлю, это будет работать. Я изменил функцию ajax:

    $("#alcrearuta").live('click',function(){
     $.ajax({
                   ....
        });
     });

1 Ответ

2 голосов
/ 15 июня 2011

Проблема в том, что вы сохраняете значение атрибута в начале запроса, вы должны сохранить его в событии click:

$("#alcrearuta").click(function(){
    var valor=$(this).attr('class');
    $.ajax({
        type: "GET",
        url: "../ajax/ruta.php",
        data: "url=" + valor,
        dataType: 'html',
        success: function(data) {
            $("#listaruta").html(data);
        }
    });        
});

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...