2015-08-15 46 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 ... 

});

注意

,如果你允许多行选择的解决方案将是不同的。