Как получить обновленное значение после того, как ajax удаляет данные из него? - PullRequest
0 голосов
/ 17 января 2011

У меня есть элемент с миниатюрами. Я разрешаю пользователям сортировать их порядок отображения (который запускает обновление БД через ajax). Я также разрешаю им удалять изображения (которые после удаления запускают запрос на обновление порядка отображения для всех оставшихся изображений).

Думаю, моя проблема с связыванием или лайвом, но я не знаю, где его применить.

Массив, запущенный при удалении, содержит ВСЕ идентификаторы для изображений, которые были при загрузке страницы. Проблема в том, что после удаления изображения массив STILL содержит исходные идентификаторы (включая тот, который был удален), поэтому он, очевидно, не обновляет значение элемента после того, как ajax удалил из него вещи. Мне нужно сказать это, чтобы получить обновленное содержимое ...

Из того, что я читал, это нормально, но я не понимаю, как связать это с моей рутиной. Мне нужно инициировать массовый повторный заказ после любого удаления.

Есть идеи, гуру?

    $('a.delimg').click(function(){
 var parent = $(this).parent().parent(); 
 var id = $(this).attr('id');
 $.ajax({
    type: "POST",
    url: "../updateImages.php",
    data: "action=delete&id=" + id,
    beforeSend: function() {
  parent.animate({'backgroundColor':'#fb6c6c'},300);

  $.jnotify("<strong>Deleting This Image & Updating The Image Order</strong>", 5000);
  },
    success: function(data) {
  parent.slideUp(300,function() {
   parent.remove();

  $("#images ul").sortable(function() { //NEEDS TO GET THE UPDATED CONTENT
  var order = $(this).sortable("serialize") + '&action=updateRecordsListings';
  $.post("../updateImages.php", order, function(theResponse){
  $.jnotify("<strong>" + theResponse + "</strong>", 2000);
  });
     });
       });

      }
    });
    return false;
    });

Спасибо за любую помощь, вы можете быть.

1 Ответ

0 голосов
/ 17 января 2011

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

var items = $("#images ul").sortable( "option", "items" );

Если это не содержит обновленный список элементов, вы можете установить их снова

$("#images ul").sortable( "option", "items", 'li' );

Эта проверка будет выполненаВаша функция перед строкой, где у вас есть комментарий

//NEEDS TO GET THE UPDATED CONTENT

Вместо того, чтобы пытаться переустанавливать элементы, как насчет уничтожения сортируемого и повторной инициализации.

$("#images ul").sortable("destroy"); // destroy
$("#images ul").sortable(); // init
...