2012-05-26 4 views
0

Я использую AJAX для удаления определенных строк из jQuery Datatable. Эти строки имеют значение 0 в 10-м столбце (если мы начнем отсчет с 0). Ниже вы можете увидеть мой код. По какой-то причине он не удаляет строку. Я проверил значение aData [10] => он определенно равен 0 в некоторых строках.Удалить строки таблицы с помощью AJAX

 $(document).ready(function(){ 
      $('#newspaper-b').dataTable({ 
      "sPaginationType":"full_numbers", 
      "aaSorting":[[4, "asc"]], 
      "aoColumns": [null,null,null,null,null,null,null,null,null,null, 
         {"bSearchable": true, "bVisible": false},null,null], 
      "bJQueryUI":true, 
      'fnRowCallback': function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
       if(aData[10]=="0"){ 
        $(nRow).remove(); 
       } 
       return nRow; 
      } 
      }); 

UPDATE

Когда я делаю это:

'fnRowCallback': function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
         var r=confirm(aData[10]); 
        if (parseInt(aData[10], 10) === 0) { 
         $(nRow).remove(); 
        } 
        return nRow; 
       } 

... то я могу видеть, что одна из строк имеет 0. Но когда я делаю это:

'fnRowCallback': function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
        if (parseInt(aData[10], 10) === 0) { 
var r=confirm(aData[10]); 
         $(nRow).remove(); 
        } 
        return nRow; 
      } 

... тогда предупреждение JS-сообщения (то есть var r=confirm(aData[10])) не появляется, что означает, что оператор IF возвращает f Alse. НО ПОЧЕМУ???

! [Введите описание изображения здесь] [1]

+0

На предположение, значение в этих строках равно 0 с ведущим/задней пробельных - попробовать ', если (ADATA [10] .Надеть (/ (^ \ S + | \ s + $)/g, '') === "0") {// ... ' – DaveRandom

+0

В MySQL DB этот столбец имеет значение smallint (6). Я проверил ваше предположение. Безрезультатно. Это мистерия. Я понятия не имею. – Gusgus

+0

Можете ли вы показать, что произойдет, если вы измените 'confirm()' в своем первом примере редактирования, чтобы подтвердить (aData [10] + (typeof aData [10])), ' – DaveRandom

ответ

0

Это может быть, возможно, проблема ввода. Попытка преобразования значения столбца в целое число, например так:

if (parseInt(aData[10], 10) === 0) { 
    $(nRow).remove(); 
} 
+0

Не могли бы вы просто «if (! aData [10])?? Я думаю, что тип принуждения, подразумеваемый' == ', означает, что ваш код будет более ограничительным, чем OP, не менее ... – DaveRandom

+0

@DaveRandom: Нет-нет, это не так (! aData [10]). Это точно. Я вижу это очень четко :) – Gusgus

Смежные вопросы