2013-05-22 42 views
1

我有一個表,用戶可以選擇多行。選定的行具有唯一的ID,然後將其彙總到一個字符串中併發布到一個PHP文件中。除了我有一個問題,這一切都很棒。如果選擇了行,則重新選擇它不會發布選擇的最後狀態的次數。所以當我查看日誌時,這是我基本看到的:jQuery selectable()通過ajax問題發佈,其中的選擇在發佈前循環其歷史

14_629_2 view.php:541 
14_629_15 view.php:541 
14_629_2 view.php:541 
14_629_15 view.php:541 
14_629_2;14_629_15 view.php:541 
14_629_15 view.php:541 

這是兩行。因此,最後一個狀態可能是兩個行都選中了14_629_2;14_629_15 view.php:541,但是由於某些原因,它會發布14_629_15 view.php:541。它就像保存了緩存或選擇歷史記錄,然後循環並將所有內容放入一個分支中,並且有時會混亂起來。

我基本上需要它來跟蹤只有當前的選擇,沒有歷史。


碼我用:

<script> 
    $('#t1').selectable({ 
     filter:'tbody tr', 
     stop: function(event, ui){ 
     var map = $(this).find(".ui-selected").map(function() {return this.id;}).get().join(";"); 
     // var result = $("#plate").empty().html(map); 
     $('#batch_send').click(function(){ 
     $(function() { 
      $.ajax({ 
       url: 'batch_send.php', 
       type: 'POST', 
       data: 'variable='+map, 
       success: function(data) { 
        $('.display_div').html(map); 
        console.log(map); 
       } 
      }); 
     }); 
     }); 
     } 
    }); 
    </script> 

我是新來的JavaScript,因此必須使用一些明顯的錯誤...

回答

0

解決方案:

它循環的原因是因爲ajax請求是在一個函數中。

所以我重寫了代碼,使其更有點簡單

var map; 
$("#t1").selectable({ 
    filter:'tbody tr', 
    cancel: 'a, #slct_ignore, thead', 
     stop: function(event, ui) { 
     map = $(this).find(".ui-selected").map(function() {return this.id;}).get().join(";"); 
    } 
}); 

$("#batch_send").click(function() { 
    $.ajax({ 
      url: 'batch_send.php', 
      type: 'POST', 
      data: 'variable='+map, 
      success: function(data) { 
            $("#plate").html(map); 
            $(".display_div").html(map); 
            } 
      }); 
});