2016-09-19 2 views
-1

У меня есть следующий код Javascript, который инициализирует диаграмму DataTables на моем веб-сайте.Если/else инструкция Javascript не работает должным образом с DataTables

В принципе, мое намерение с помощью этого скрипта заключается в AJAX в разных данных, основанных на URL-адресе, в котором в данный момент находится пользователь. Я написал инструкцию if/else, которая работала для других компонентов на моей странице, но не работает для моей диаграммы DataTables.

Почему это не работает? Есть ли лучший способ сделать это?

var URL = window.location.href; 

if (URL.indexOf("london") !== -1) { 
    // initialize datatables chart 
    $(document).ready(function() { 
    var table = $('#aging_projects').DataTable({ 
    "processing": true, 
    "serverSide": false, 
    "ajax": "../financial-reports/aging-projects-london.php", 
    "destroy": true, 
    "resonsive": true, 
    initComplete: function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $('<select class="form-control"><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 

        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 

      column.data().unique().sort().each(function (d, j) { 
       select.append('<option value="'+d+'">'+d+'</option>') 
      }); 
     }); 
    } 
    }); 
    }); 
} 
if (URL.indexOf("nw") !== -1) { 
    // initialize datatables chart 
    $(document).ready(function() { 
    var table = $('#aging_projects').DataTable({ 
    "processing": true, 
    "serverSide": false, 
    "ajax": "../financial-reports/aging-projects-nw.php", 
    "destroy": true, 
    "resonsive": true, 
    initComplete: function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $('<select class="form-control"><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 

        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 

      column.data().unique().sort().each(function (d, j) { 
       select.append('<option value="'+d+'">'+d+'</option>') 
      }); 
     }); 
    } 
    }); 
    }); 
} 
if (URL.indexOf("loupe") !== -1) { 
    // initialize datatables chart 
    $(document).ready(function() { 
    var table = $('#aging_projects').DataTable({ 
    "processing": true, 
    "serverSide": false, 
    "ajax": "../financial-reports/aging-projects-loupe.php", 
    "destroy": true, 
    "resonsive": true, 
    initComplete: function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $('<select class="form-control"><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 

        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 

      column.data().unique().sort().each(function (d, j) { 
       select.append('<option value="'+d+'">'+d+'</option>') 
      }); 
     }); 
    } 
    }); 
    }); 
} 
if (URL.indexOf("new-york") !== -1) { 
    // initialize datatables chart 
    $(document).ready(function() { 
    var table = $('#aging_projects').DataTable({ 
    "processing": true, 
    "serverSide": false, 
    "ajax": "../financial-reports/aging-projects-new-york.php", 
    "destroy": true, 
    "resonsive": true, 
    initComplete: function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $('<select class="form-control"><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 

        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 

      column.data().unique().sort().each(function (d, j) { 
       select.append('<option value="'+d+'">'+d+'</option>') 
      }); 
      }); 
     } 
    }); 
    }); 
} 
if (URL.indexOf("content") !== -1) { 
    // initialize datatables chart 
    $(document).ready(function() { 
    var table = $('#aging_projects').DataTable({ 
    "processing": true, 
    "serverSide": false, 
    "ajax": "../financial-reports/aging-projects-content.php", 
    "destroy": true, 
    "resonsive": true, 
    initComplete: function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $('<select class="form-control"><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 

        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 

      column.data().unique().sort().each(function (d, j) { 
       select.append('<option value="'+d+'">'+d+'</option>') 
      }); 
     }); 
    } 
    }); 
    }); 
} 
else { 
    // initialize datatables chart 
    $(document).ready(function() { 
    var table = $('#aging_projects').DataTable({ 
    "processing": true, 
    "serverSide": false, 
    "ajax": "../financial-reports/aging-projects.php", 
    "destroy": true, 
    "resonsive": true, 
    initComplete: function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $('<select class="form-control"><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 

        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 

      column.data().unique().sort().each(function (d, j) { 
       select.append('<option value="'+d+'">'+d+'</option>') 
      }); 
     }); 
     } 
    }); 
    }); 
} 
+0

Какой браузер и версия вы используете? –

+0

@KarlAnderson Google Chrome Version 53.0.2785.116. – Liz

+0

Вы пробовали 'if (URL.toLowerCase(). IndexOf (" london ")! == -1) {', чтобы узнать, является ли это проблемой чувствительности к регистру? –

ответ

1

Я не могу увидеть ошибку, но, может быть, если вы измените код таким образом, должно быть более легко отлаживать и найти ошибку.

var URL = window.location.href; 
var ajaxURL = ''; 

if (URL.indexOf("london") !== -1) { 
    ajaxURL = 'aging-projects-london.php'; 
}else if (URL.indexOf("nw") !== -1) { 
    ajaxURL = 'aging-projects-nw.php'; 
}else if (URL.indexOf("loupe") !== -1) { 
    ajaxURL = 'aging-projects-loupe.php'; 
}else if (URL.indexOf("new-york") !== -1) { 
    ajaxURL = 'aging-projects-new-york.php'; 
}else if (URL.indexOf("content") !== -1) { 
    ajaxURL = 'aging-projects-content.php'; 
}else { 
    ajaxURL = 'aging-projects.php'; 
} 
$(document).ready(function() { 
    var table = $('#aging_projects').DataTable({ 
     "processing": true, 
     "serverSide": false, 
     "ajax": "../financial-reports/" + ajaxURL, 
     "destroy": true, 
     "resonsive": true, 
     initComplete: function() { 
      this.api().columns().every(function() { 
       var column = this; 
       var select = $('<select class="form-control"><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
         ); 

        column 
        .search(val ? '^'+val+'$' : '', true, false) 
        .draw(); 
       }); 

       column.data().unique().sort().each(function (d, j) { 
        select.append('<option value="'+d+'">'+d+'</option>') 
       }); 
      }); 
     } 
    }); 
}); 
+0

Благодарим вас за ответ @manuerumx. Это намного чище, чем беспорядок, который я изначально имел, и помог мне разобраться с проблемой. – Liz

+0

Рад, что я могу помочь вам @LizBanach – manuerumx