Mvc: $ (& hellip;). DataTable не является функцией [duplicate]

В то время как обещания и обратные вызовы хорошо работают во многих ситуациях, боль в задней части выражает нечто вроде:

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

31
задан Gyrocode.com 8 July 2015 в 14:20
поделиться

6 ответов

Вам нужно загрузить jQuery перед , когда вы загружаете какой-либо код, связанный с jQuery, такой как jQuery DataTables, см. ниже:

<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.dataTables.js" type="text/javascript"></script>

Кроме того, для производственной версии рекомендуется загружать (окончание на .min.js).

См. jQuery DataTables: Общие ошибки консоли JavaScript для получения дополнительной информации об этой и других распространенных ошибках консоли.

53
ответ дан Gyrocode.com 24 August 2018 в 01:25
поделиться

Вот полный набор JS и CSS, необходимый для плагина для таблицы экспорта, чтобы работать отлично.

Надеюсь, что это сэкономит ваше время

   <!--Import jQuery before export.js-->
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>


    <!--Data Table-->
    <script type="text/javascript"  src=" https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
    <script type="text/javascript"  src=" https://cdn.datatables.net/buttons/1.2.4/js/dataTables.buttons.min.js"></script>

    <!--Export table buttons-->
    <script type="text/javascript"  src="https://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script>
    <script type="text/javascript" src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.24/build/pdfmake.min.js" ></script>
    <script type="text/javascript"  src="https://cdn.rawgit.com/bpampuch/pdfmake/0.1.24/build/vfs_fonts.js"></script>
    <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.2.4/js/buttons.html5.min.js"></script>
    <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.2.1/js/buttons.print.min.js"></script>

<!--Export table button CSS-->

<link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.2.4/css/buttons.dataTables.min.css">

javascript, чтобы добавить кнопки экспорта в таблицу с id = tbl

  $('#tbl').DataTable({
                        dom: 'Bfrtip',
                        buttons: [
                            'copy', 'csv', 'excel', 'pdf', 'print'
                        ]
                    });

Результат: -

3
ответ дан Hitesh Sahu 24 August 2018 в 01:25
поделиться

Это сработало для меня. Но обязательно загрузите jquery.js перед предпочтительным файлом dataTable.js. Приветствия!

<script type="text/javascript" src="~/Scripts/jquery.js"></script>
<script type="text/javascript" src="~/Scripts/data-table/jquery.dataTables.js"></script>

 <script>$(document).ready(function () {
    $.noConflict();
    var table = $('# your selector').DataTable();
});</script>
12
ответ дан Ichorville 24 August 2018 в 01:25
поделиться

, если по какой-то причине загружаются две версии jQuery (что не рекомендуется), вызов $ .noConflict (true) из второй версии вернет переменные jQuery с глобальным охватом в значения для первой версии.

В некоторых случаях это может быть проблема со старой версией (или нестабильной) файлов JQuery

Решение использует $ .noConflict ();

<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.dataTables.js" type="text/javascript"></script>
<script>
$.noConflict();
jQuery( document ).ready(function( $ ) {
    $('#myTable').DataTable();
});
// Code that uses other library's $ can follow here.
</script>
6
ответ дан Manoj Patil 24 August 2018 в 01:25
поделиться

Я получил эту ошибку, потому что обнаружил, что я дважды ссылался на jQuery.

Первый раз: на главной странице (_Layout.cshtml) в ASP.NET MVC, а затем снова на одной текущей странице поэтому я прокомментировал это на главной странице.

Если вы используете ASP.NET MVC, этот фрагмент может помочь вам

@*@Scripts.Render("~/bundles/jquery")*@//comment this line 
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)

, а на текущей странице я добавил эти строки

<script src="~/scripts/jquery-1.10.2.js"></script>

<!-- #region datatables files -->
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css" />
<script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<!-- #endregion -->

Надеюсь, это поможет вам, даже если вы не используете ASP.NET MVC

15
ответ дан marc_s 24 August 2018 в 01:25
поделиться

Для этой ошибки могут быть две причины:

First

Вы используете loding jQuery.DataTables.js перед jquery.js, поэтому: -

Перед загрузкой вам нужно загрузить jQuery.js jQuery.DataTables.js

Second

Вы используете две версии jQuery.js на той же странице, чтобы для этого : -

Попробуйте использовать более высокую версию и убедитесь, что обе ссылки имеют одну и ту же версию jQuery

4
ответ дан tenstormavi 24 August 2018 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: