2015-08-15 44 views
1

我使用jQuery的數據表,我可以使用此代碼從數據表中獲取數據,然後通過它與阿賈克斯

var str = $.map(table.rows('.selected').data(), function (item) { 
        return item[5]+" "+item[0] 
       }); 

其中item[5]是ID得到所選行的數據PHP,item[0]是一個字符串。

我想分割傳遞id和字符串的返回字符串。 特別在

data : {} 

創建於Ajax代碼錯誤的位置是在該代碼的問題。

<script> 

$(document).ready(function() { 
    var table = $('#liveSearch').DataTable(); 
    $('#liveSearch tbody').off('click', 'tr').on('click', 'tr', function() { 
     if ($(this).hasClass('selected')) { 
      $(this).removeClass('selected'); 
     } 
     else { 
      table.$('tr.selected').removeClass('selected'); 
      $(this).addClass('selected'); 
     } 
    }); 

     $('.example3-1').on('click', function() { 
      if ((table.rows('.selected').data().length) > 0) { 
       var str = $.map(table.rows('.selected').data(), function (item) { 
        return item[5]+" "+item[0] 
       }); 
       console.log(str); 
      $.confirm({ 
       confirmButtonClass: 'btn-info', 
       cancelButtonClass: 'btn-danger', 
       confirm: function() { 
        $.ajax({ 
         type: 'post', 
         url: 'delete.php', 
         data: { 
          str1 : str.substr(0,str.indexOf(' ')), 
          str2 : str.substr(str.indexOf(' ')+1) 
         }, 
         success: function(data) { 
          console.log(data); 
         } 
        }); 
        table.row('.selected').remove().draw(false); 

       } 
      }); 
     } 
     }); 
}); 

+0

您是否嘗試過在瀏覽器中使用javascript調試器? – RiggsFolly

+0

否**使用JavaScript調試器**它是一個偉大的工具,並且存在於所有瀏覽器中。試試F12 – RiggsFolly

回答

0

原因

你只是只允許一個行選擇。但是,您正在使用$.map,它會按照您的預期返回Array而不是string。僅在一行中使用$.map沒有意義。

SOLUTION

使用下面的代碼,而不是以獲取所選行的數據和生產所需的字符串。

var rowdata = table.row('.selected').data(); 
var str = rowdata[5] + " " + rowdata[0]; 

它可以被進一步簡化:

var rowdata = table.row('.selected').data(); 

// ... skipped ... 

$.ajax({ 

    // ... skipped ... 

    data: { 
     str1: rowdata[5], 
     str2: rowdata[0] 
    } 

    // ... skipped ... 

});

注意

,如果你允許多行選擇的解決方案將是不同的。